平面设计素材网站有哪些,网站5建设需要学什么,设计师网红cad图库,重庆网站网站建设Composite#xff08;组合#xff09;–对象结构型模式
一、意图 将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。
二、动机 1.软件在某些情况下#xff0c;客户代码过多的依赖于对象容器复杂的内部实现结构…Composite组合–对象结构型模式
一、意图 将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。
二、动机 1.软件在某些情况下客户代码过多的依赖于对象容器复杂的内部实现结构对象容器内部实现结构而非抽象接口的变化将引起客户代码的频繁变化带来了代码的维护性、扩展性等弊端。 2.如何将“客户代码与复杂代码的对象容器结构”解耦让对象容器自己来实现自身的复杂结构从而使得客户代码就像处理简单对象一样来处理复杂的对象容器
三、适用性 1.你想表示对象的部分-整体层次结构。 2.你希望用户忽略组合对象与耽搁对象的不同用户将统一地使用组合结构中所有对象。
四、结构
五、效果 1.定义了保护洁白对象和组合对象的类层次结构。 2.简化客户代码。 2.是的更容易增加新类型的组件。 4.使你的设计变得更加一般化。
六、实现 1.显示的父部件引用。 2.共享组件。 3.最大化Component接口。 4.声明管理子部件的操作。 5.Component是否应该实现一个Component列表。 6.子部件排序。 7.使用高速缓冲存贮改善性能。 8. 应该由谁删除Component 9. 存贮组件最好用哪一个数据结构。
七、要点总结 1.Composite模式采用树形结构来实现普遍存在的对象容器从而将“一对多”的关系转化为“一对一”的关系使得客户代码可以一致地复用处理对象和对象容器无需关系处理的是单个对象还是组合的对象容器。 2.将“客户代码与复杂的对象容器结构”解耦是Composite的核心思想解耦之后客户代码将与纯粹的抽象接口——而非对象容器的内部实现结构——发生依赖从而更能“应对变化”。 3.Composite模式在具体实现中可以让父对象的子对反向追溯如果父对象有频繁的遍历需求可以使用缓存技巧来改善效率。
八、相关模式 通常部件-父部件连接用于Responsibility of Chain模式 Decorator模式经常与Composite模式一起使用。当装饰和组合一起使用时它们通常有一个公共的父类。因此装饰必须支持Add、Remove和GetChild操作的Component接口。 Flyweight让你共享组件但不再能引用它们的父部件。 Itertor可用来遍历Composite。 Visitor将本来应该分布子啊Composite和Leaf类中的操作和行为局部化。
九、举例说明 Composite模式就像一颗树。
本文为李建忠设计模式视频的笔记以及《设计模式-可复用面向对象的软件的基础》和自己的部分见解