js设计模式(4)---组合模式
0.前言
今天是建党节,新疆那边又开始了闹腾。作为立志成为码农的我,现在已经从一个大愤青淡化为一个小愤青,对这些国家民生大事不在血气喷发,转而把经历发泄在技术问题上面,因而在扯一篇随笔吧,把无处发泄的精力挥洒出去。
1.组合模式的使用条件
主要用于解决WEB上的动态用户界面,使用这种模式,可以用一条命令在多个对象上激发复杂的或递归的行为。组合模式擅长对大批量对象进行操作。
换句话,组合模式的使用范围: 1、存在一批相似或相近的大量对象,而具体结构在开发初期无法知道具体结构;2.希望对这批对象进行同一个操作。
2.什么是组合模式
首先,对象可以呈现树形结构,单个对象(叶子对象)和组合对象具有一致性,说白了就是叶子对象和组合对象有相似的方法,通过遍历直接调用相同的方法,使用过jQuery的码农应该很清楚吧,例如$('.class1').onclick(...),你不管是什么元素,div、a也好,button也好,只要被匹配到,我都被其绑定点击事件,不过不能忽视的是该事件都具有click属性。同样组合对象就是让每一个对象(叶子对象、组合对象),都具有某些属性,例如add、remove等,这样就可以对其进行遍历了,就可以一次操作多个对象了。
代码是最好的语言,由于本人较懒,大家直接去看大叔的例子吧,不过我还是说下思路:1.首先定义接口(抽象类),组合对象的都要实现其方法,这样就可以遍历;2.组合对象实现接口;3.叶子节点实现接口。这样基础东西已经完成,接下来就可以进行组装。
3.利与弊
利: 1.可以用同样的方法处理多个对象;2.把一批子对象组织为树形结构,并且使整棵树都可以被遍历;3.简单操作也能产生复杂的效果
弊: 需要定义接口,代码变得复杂
4.个人理解
1.组合模式主要应用于动态页面,也就是在开发初期无法确定具体结构的页面,例如表单校验;
2.组合对象有叶对象和组合对象构成,能够形成树形结构,具有相同的方法,可以对其进行遍历;
3.使用:有大量的对象,且可以把这些对象组成树形结构;需要对这些对象进行同一处理;
4.如何:首先定义一个公共抽象类,接着组合对象、叶子节点继承这些抽象类,这样就形成了树形结构,最后就是组装。
js设计模式(4)---组合模式的更多相关文章
- JS设计模式——9.组合模式
组合模式概述 组合模式是一种专为创建Web上的动态用户界面量身定制的模式.使用这种模式可以用一条命令在多个对象上激发复杂的递归的行为. 它可以用来把一批子对象组织成树形结构,并且使整棵树都可被遍历.所 ...
- JavaScript设计模式之----组合模式
javascript设计模式之组合模式 介绍 组合模式是一种专门为创建Web上的动态用户界面而量身制定的模式.使用这种模式可以用一条命令在多个对象上激发复杂的或递归的行为.这可以简化粘合性代码,使其更 ...
- C#设计模式(10)——组合模式(Composite Pattern)
一.引言 在软件开发过程中,我们经常会遇到处理简单对象和复合对象的情况,例如对操作系统中目录的处理就是这样的一个例子,因为目录可以包括单独的文件,也可以包括文件夹,文件夹又是由文件组成的,由于简单对象 ...
- JS设计模式——5.单体模式
JS设计模式——5.单体模式 http://www.cnblogs.com/JChen666/p/3610585.html 单体模式的优势 用了这么久的单体模式,竟全然不知!用它具体有哪些好处呢? ...
- c++设计模式15 --组合模式
今天研究了一下设计模式15 组合模式 本人是菜鸟一枚,所以一开始完全不懂组合究竟是什么意思.先上图一张,树形结构图: 文档说,如果想做出这样的结构,通常考虑组合模式.那是为什么呢?现在让我们看一下组合 ...
- 乐在其中设计模式(C#) - 组合模式(Composite Pattern)
原文:乐在其中设计模式(C#) - 组合模式(Composite Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 组合模式(Composite Pattern) 作者:weba ...
- C#设计模式(10)——组合模式(Composite Pattern)(转)
一.引言 在软件开发过程中,我们经常会遇到处理简单对象和复合对象的情况,例如对操作系统中目录的处理就是这样的一个例子,因为目录可以包括单独的文件,也可以包括文件夹,文件夹又是由文件组成的,由于简单对象 ...
- C#设计模式:组合模式(Composite Pattern)
一,C#设计模式:组合模式(Composite Pattern) using System; using System.Collections.Generic; using System.Linq; ...
- js设计模式——7.备忘录模式
js设计模式——7.备忘录模式 /*js设计模式——备忘录模式*/ // 备忘类 class Memento { constructor(content) { this.content = conte ...
- js设计模式——6.模板方法模式与职责链模式
js设计模式——6.模板方法模式与职责链模式 职责链模式
随机推荐
- 如何让静态库中的可执行程序不调用的函数不链接进该可执行程序?(-ffunction-sections -Wl,--gc-sections)
关键词: -Wl,--gc-sections -ffunction-sections 链接 elf 库 有时我们会遇到这种情况,可执行程序需要链接一些静态库,但是静态库中的函数并没有全部使 ...
- HTML5图片拖拽预览原理及实现
一.前言 这两天恰好有一位同事问我怎样做一个图片预览功能.作为现代人的我们首先想到的当然是HTML5啦,其实HTML5做图片预览已经是一个老生常谈的问题了.我在这里就简单说说其中相关的一些东西,当然会 ...
- python 操作word文档
因为工作需要操作一些word文档,记录一下学习思路 #-*- encoding: utf8 -*- import win32com from win32com.client import Dispat ...
- C# mvc--EF引用程序集 和EDMX中相关的文件说明
- xml<>编译
< 用 < >用 > 表示"空格"
- java 转义字符
\t 相当于tab,缩进\n 回车\r 换行\b 换成 一个黑点
- 【阿里云产品公测】给ACE的建议
作者:阿里云用户云想未来 今天给ace带来一些建议,首先,集群模式没什么好说的了,也不是新手用的,今天讲下单实例模式,建议ace开放独立ip购买,按天按月按年付费,收费可以5元左右,为什么这么说呢?其 ...
- Objective-C 高级编程:iOS与OS X多线程和内存管理
<Objective-C 高级编程:iOS与OS X多线程和内存管理> 基本信息 原书名: Pro Multithreading and Memory Management for iOS ...
- Kinect For Windows V2开发日志六:人体的轮廓的表示
Kinect中带了一种数据源,叫做BodyIndex,简单来说就是它利用深度摄像头识别出最多6个人体,并且用数据将属于人体的部分标记,将人体和背景区别开来.利用这一特性,就可以在环境中显示出人体的轮廓 ...
- Nginx负载趟过的坑
在项目中经常会碰到需要利用Nginx作负载,最近在利用Nginx作负载均衡器时碰到一个很奇葩的问题. 本来按照以前的实现将打好的A.war包直接放到tomcat根目录(webapps)下,然后按照如下 ...