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.模板方法模式与职责链模式 职责链模式
随机推荐
- git-ssh 配置和使用
1.设置Git的user name和email:(如果是第一次的话) $ git config --global user.name "humingx" $ git config ...
- VirtualBox 导入.vdi文件时报“uuid is exists”错误
解决办法: 1.要安装的.vdi文件所在目录:D:\developTools\vm\RedHatLinux1.vdi 2.找到VirtualBox的安装目录,这里是D:\Program Files\O ...
- iOS 关于UIscrollView
设置 滚动起始位置 [scrollView setContentOffset:CGPointMake(0, 0) animated:YES];
- nodejs的mysql模块学习(九)连接池集群
连接池集群 连接池集群可以提供多个主机连接 创建连接池集群 //创建连接池集群 var poolCluster = mysql.createPoolCluster(); //添加配置 config是一 ...
- Hadoop学习笔记(3)——分布式环境搭建
Hadoop学习笔记(3) ——分布式环境搭建 前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里, ...
- 用英文加优先级来解读C的声明
比如:int ( * func_p ) ( double ); 首先着眼于标识符. func_p is 因为存在括号,(* func_p) 先被处理,这里着眼于* func_p is a pointe ...
- 查询SQL SERVER数据库日志工具
在SQL SERVER中查看操作日志,一直是一个比较麻烦的事情,因为微软并没有提供直接的系统工具可以查看日志内容,虽然可以通过非正式的隐藏接口dbcc log 获取日志的非解析编码但是要还原是个非常麻 ...
- javaweb学习总结二十四(servlet经常用到的对象)
一:ServletConfig对象 1:用来封装数据初始化参数,在服务器web.xml配置文件中可以使用<init-param>标签配置初始化参数. 2:实例演示 web.xml文件中配置 ...
- AngularJs指令(一)
AngularJs应用现在越来越流行了,谷歌都与微软合作支持AngularJS2.0,这是要逆天了,说明AngularJs将来大势所趋.最近想跳槽,又重新拾起了AngluarJs(之前由于缺少项目应用 ...
- React Native技术知识总结(不定期补充)
1.JSON https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON JSON.pa ...