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.模板方法模式与职责链模式 职责链模式
随机推荐
- C# mvc--ORM框架中EF的作用和特点
存放于System.Linq.QueryAble 静态类中 并且所有的扩展方法扩展自 IqueryAble<TSource>泛型接口上 用途: 接收lambda表达式 利用EF生成对应的s ...
- [设计模式] .NET设计模式笔记 - 了解设计模式
今天在TerryLee的cnblog(http://terrylee.cnblogs.com)里看到了与设计模式相关的整套文章,初学设计模式看完每篇文章后做些笔记和摘抄. ●什么是设计模式,什么是架构 ...
- C#泛型(C#_编程指南)CSDN学习整理笔记
1.1. 泛型概述 2.0版C#语言和公共语言运行时(CLR)中增加了泛型.泛型将类型参数的概念引入.NETFramework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类型的指定 ...
- centos下添加环境变量和启动apache
#修改环境变量文件 vi /etc/profile #文件内容末尾添上 PATH=/usr/local/php/bin:$PATH export PATH #修改后让环境变量生效 source /et ...
- iOS - UI - UISegmentedControl
1.UISegmentedControl NSArray * array = @[@"red",@"green",@"yellow",@&q ...
- 关于ADO.NET 实体数据数据模型无法为Mysql 选择6.0 解决方案
错误:您的项目引用了最新实体框架:但是,找不到数据链接所需的与版本兼容的实体框架数据库....... 图片:
- ubuntu server 系统,更换阿里云源(用户更新源)
Ubuntu安装完毕后,默认使用的是官方的源,在国内访问速度很慢,这里介绍更换为阿里云的源方法. 步骤如下: 1.备份源配置文件 sudo cp /etc/apt/sources.list /etc/ ...
- org.springframework.dao.InvalidDataAccessApiUsageException:The given object has a null identifi的解决方案
异常信息: org.springframework.dao.InvalidDataAccessApiUsageException: The given object has a null identi ...
- Kinect For Windows V2开发日志五:使用OpenCV显示彩色图像及红外图像
彩色图像 #include <iostream> #include <Kinect.h> #include <opencv2\highgui.hpp> using ...
- POJ 2236 Wireless Network (并查集)
Wireless Network Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 18066 Accepted: 761 ...