Composite模式 组合模式】的更多相关文章

Android的ViewGroup 和 View 的关系,即是采用组合模式 1. 概述 在数据结构里面,树结构是很重要,我们可以把树的结构应用到设计模式里面. 例子1:就是多级树形菜单. 例子2:文件和文件夹目录 2.问题 我们可以使用简单的对象组合成复杂的对象,而这个复杂对象有可以组合成更大的对象.我们可以把简单这些对象定义成类,然后定义一些容器类来存储这些简单对象.客户端代码必须区别对象简单对象和容器对象,而实际上大多数情况下用户认为它们是一样的.对这些类区别使用,使得程序更加复杂.递归使用…
  1. 主要优点 组合模式的主要优点如下: (1) 组合模式可以清楚地定义分层次的复杂对象,表示对象的全部或部分层次,它让客户端忽略了层次的差异,方便对整个层次结构进行控制. (2) 客户端可以一致地使用一个组合结构或其中单个对象,不必关心处理的是单个对象还是整个组合结构,简化了客户端代码. (3) 在组合模式中增加新的容器构件和叶子构件都很方便,无须对现有类库进行任何修改,符合“开闭原则”. (4) 组合模式为树形结构的面向对象实现提供了一种灵活的解决方案,通过叶子对象和容器对象的递归组合,…
什么是组合模式,这个有待研究,个人觉得是各类组合而形成的一种结构吧. 组合模式: 组合模式 概述 将对象组合成树形结构以表示"部分-整体"的层次结构."Composite使得用户对单个对象和组合对象的使用具有一致性." 适用性 1.你想表示对象的部分-整体层次结构. 2.你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象. 参与者 1.Component 为组合中的对象声明接口. 在适当的情况下,实现所有类共有接口的缺省行为. 声明一个接口…
迭代模式设置共生死亡,一般来说.我们只是想实现一个集,我们需要的同时提供这个集合的迭代器,喜欢java中间Collection.List.Set.Map等,这些集合都有自己的迭代器.假如我们要实现一个这种新的容器,当然也须要引入迭代器模式.给我们的容器实现一个迭代器.----题记 设计模式 迭代器模式:提供一种方法顺序訪问一个聚合对象中的各个元素,而不暴露其内部的表示. 把游走的任务放在迭代器上.而不是聚合上. 这样简化了聚合的接口和实现.也让责任各得其所. 组合模式:同意你将对象组合成树形结构…
迭代器模式:提供一种方法书序访问一个聚合对象中的各个元素,而又不暴露其内部的表示. 用到的设计原则:1.封装变化2.多用组合,少用继承|3.针对接口编程,不针对实现编程4.松耦合5.对扩展开放,对修改关闭6.依赖抽象,不依赖具体7.只和朋友交谈8.别找我,我会找你9.类应该只有一个改变的理由 迭代器模式非常简单,直接看代码(代码的意思,PancakeHouseMenu和DinerMenu两种菜单,一个用了list一个用了数组,分别对应两种类型的Iterator方便Waitress操作菜单) cl…
* 基本宏命令 var closeDoorCommand = { execute: function() { console.log("Closing the door..."); } }; var openPcCommand = { execute: function() { console.log("Opening the PC..."); } }; var launchQQCommand = { execute: function() { console.lo…
组合模式(Composite Pattern) 组合模式,有时候又叫部分-整体结构(part-whole hierarchy),使得用户对单个对象和对一组对象的使用具有一致性.简单来说,就是可以像使用一个对象那样,来使用一组对象(The composite pattern describes that a group of objects are to be treated in the same way as a single instance of an object.),最后达到用户和这一…
一.概述 在软件开发中,我们往往会遇上类似树形结构的对象体系.即某一对象既可能在树形结构中作为叶节点存在,也可能作为分支节点存在.比如在文件系统中,文件是作为叶节点存在,而文件夹就是分支节点.在设计这类对象时,如果将叶节点和分支节点区别对待,那么在实际开发中会带来较大的复杂性.比如客户端调用时可能会频繁的使用转型操作,同时代码的可维护性和扩展性也较差.在设计中使用组合模式可以解决这一系列弊端. 二.组合模式 组合模式定义了叶节点和分支节点的一致的接口,将客户端代码与复杂的对象结构解耦,大大降低了…
DP书上给出的定义:将对象组合成树形结构以表示“部分-整体”的层次结构.组合使得用户对单个对象和组合对象的使用具有一致性.注意两个字“树形”.这种树形结构在现实生活中随处可见,比如一个集团公司,它有一个母公司,下设很多家子公司.不管是母公司还是子公司,都有各自直属的财务部.人力资源部.销售部等.对于母公司来说,不论是子公司,还是直属的财务部.人力资源部,都是它的部门.整个公司的部门拓扑图就是一个树形结构. 下面给出组合模式的UML图.从图中可以看到,FinanceDepartment.HRDep…
本文出自   http://blog.csdn.net/shuangde800 认识组合模式 上一篇中,我们可以用迭代器来实现遍历一个集合(数组,ArrayList, Vector, HashTable等). 假设有这样一种集合结构i:餐厅里有一份菜单,菜单里面还有子菜单,其实就是一个树形的结构 那么,之前的迭代器就不能用了. 我们需要新的设计: 1. 需要某种树形结构,可以容纳菜单,子菜单和菜单项 2. 需要确定能够在每个菜单的各个项之间游走,而且至少要像现在用迭代器一样方便 3. 我们也需要…