JavaScript设计模式:组合模式
宏命令-示例
var closeDoorCommand = {execute: function(){console.log( '关门' );}
};var openPcCommand = {execute: function(){console.log( '开电脑' );}
};var openQQCommand = {execute: function(){console.log( '登录QQ' );}
};var MacroCommand = function(){return {commandsList: [],add: function( command ){this.commandsList.push( command );},execute: function(){for ( var i = 0, command; command = this.commandsList[ i++ ]; ){command.execute();}}}};var macroCommand = MacroCommand();macroCommand.add( closeDoorCommand );
macroCommand.add( openPcCommand );
macroCommand.add( openQQCommand );macroCommand.execute();
组合模式
组合模式将对象组合成树形结构,以表示“部分-整体”的层次结构。除了用来表示树形结构之外,组合模式的另一个好处是通过对象的多态性表现,使得用户对单个对象和组合对象的使用具有一致性,下面分别说明。
❏ 表示树形结构。通过回顾上面的例子,我们很容易找到组合模式的一个优点:提供了一种遍历树形结构的方案,通过调用组合对象的execute方法,程序会递归调用组合对象下面的叶对象的execute方法,所以我们的万能遥控器只需要一次操作,便能依次完成关门、打开电脑、登录QQ这几件事情。组合模式可以非常方便地描述对象部分-整体层次结构。
❏ 利用对象多态性统一对待组合对象和单个对象。利用对象的多态性表现,可以使客户端忽略组合对象和单个对象的不同。在组合模式中,客户将统一地使用组合结构中的所有对象,而不需要关心它究竟是组合对象还是单个对象。
注意事项
1.组合模式不是父子关系
2.对叶对象操作的一致性
3.双向映射关系
4.用职责链模式提高组合模式性能
使用场景
组合模式如果运用得当,可以大大简化客户的代码。一般来说,组合模式适用于以下这两种情况。
❏ 表示对象的部分-整体层次结构。组合模式可以方便地构造一棵树来表示对象的部分-整体结构。特别是我们在开发期间不确定这棵树到底存在多少层次的时候。在树的构造最终完成之后,只需要通过请求树的最顶层对象,便能对整棵树做统一的操作。在组合模式中增加和删除树的节点非常方便,并且符合开放-封闭原则。
❏ 客户希望统一对待树中的所有对象。组合模式使客户可以忽略组合对象和叶对象的区别,客户在面对这棵树的时候,不用关心当前正在处理的对象是组合对象还是叶对象,也就不用写一堆if、else语句来分别处理它们。组合对象和叶对象会各自做自己正确的事情,这是组合模式最重要的能力。
JavaScript设计模式:组合模式相关推荐
- javascript设计模式-组合模式
1 <!DOCTYPE HTML> 2 <html lang="en-US"> 3 <head> 4 <meta charset=&quo ...
- JavaScript设计模式——组合模式
CSDN话题挑战赛第2期 参赛话题:学习笔记 学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程.这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路.学习之乐,独乐乐,不如众乐 ...
- JavaScript设计模式系列—模式篇总结(上)
转载请注明预见才能遇见的博客:http://my.csdn.net/ 原文地址:https://blog.csdn.net/pcaxb/article/details/102517956 JavaSc ...
- 设计模式---组合模式
设计模式---组合模式 什么是组合模式:Composite? 使用场景 代码示例 组合模式模板 组合模式的安全性和透明性 总结 优缺点: 适用场景: 什么是组合模式:Composite? 计算机的文件 ...
- Java设计模式 —— 组合模式(Composite)
Java设计模式 -- 组合模式(Composite) 定义 Composite,组合模式:将对象组合成树形结构以表示部分整体的关系,Composite使得用户对单个对象和组合对象的使用具有一致性. ...
- JS设计模式--组合模式
JS设计模式–组合模式 昨天学习了白贺翔老师的JS组合模式,现在把我学到的分享出来叭O(∩_∩)O,直接看下面代码 <!DOCTYPE html> <html lang=" ...
- js设计模式——组合模式
组合模式将对象组合成树形结构,以表示"部分-整体"的层次结构.除了用来表示树形结构之外,组合模式的另一个好处是通过对象的多态性表现,是的用户对单个对象和组合对象的使用具有一致性. ...
- 设计模式----组合模式UML和实现代码
2019独角兽企业重金招聘Python工程师标准>>> 一.什么是组合模式? 组合模式(Composite)定义:将对象组合成树形结构以表示'部分---整体'的层次结构.组合模式使得 ...
- js设计模式-组合模式
组合模式是一种专为创建web上的动态用户界面而量身定制的模式.使用这种模式,可以用一条命令在多个对象上激发复杂的或递归的行为.这可以简化粘合性代码,使其更容易维护,而那些复杂行为则被委托给各个对象. ...
- 大话设计模式—组合模式
组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这种类型的设计模式属于结构型模式, ...
最新文章
- 情人节,你刚表白,而我已经开始选哪里拍婚纱照了~
- golomb哥伦布编码——本质上就是通过0来区分商和余数
- 升级Xcode7.3 iOS9.3后,unity转C++代码出现 2 errors
- 查看python版本号-怎么查看python版本号
- 验证部分表单是否重复
- Linux系统的各种安装方法与修复技巧
- Uninterruptible Sleep(不可中断的睡眠)
- PAT乙级 1033 旧键盘打字 (20 分)
- linux自动更新漏洞,Linux爆本地提权漏洞 请立即更新udev程序
- java下载网络文件_java 从网络Url中下载文件
- C# AE 对图层筛选要素后显示/只显示符合条件的要素
- Python中的staticmethod和classmethod
- Truecrypt之死
- 水电图纸——总配电箱——1
- 新大陆云平台的.jar .sdk打包
- AI插画师:生成对抗网络
- Java图像处理方面的工具库和开发包
- AutoHotKey的那些事儿:(一)、AutoHotkey常用命令
- 区块链随想录——BitCoin的未来会如何?
- c语言用空格分隔和用逗号分隔,c语言程序设计课呵件第02章简单程序设计.ppt
热门文章
- 老域名值不值得购买?买老域名需要注意啥?
- 基于Matlab融合惯性测量单元和全球定位系统数据估计地面车辆的位置和方向(附源码)
- 安卓开发学习11-1:Android程序调试:DDMS工具使用
- “10万元电商店”为何一夜之间在三四线城市火了
- CSTgif动图导出 与gif导出失败解决方法
- 常见的网站服务器环境搭建
- 【git】Git 与SVN
- Marshal Unmarshal in golang
- Unity3d导入图片自动修改TextureType为Sprite(2D and UI)及设置Packing Tag为文件夹名。
- Cesium立体建筑物闪烁效果