www . ChinaSA . info D esign P atterns D esign P atterns 组合模式组合模式刘伟(Sunny) weiliu_china@ www . ChinaSA . info 大纲?组合模式概述?组合模式的结构与实现?组合模式的应用实例?透明组合模式与安全组合模式?组合模式的优缺点与适用环境 www . ChinaSA . info 组合模式概述? Windows 操作系统目录结构 www . ChinaSA . info 组合模式概述?分析?在树形目录结构中,包含文件和文件夹两类不同的元素?在文件夹中可以包含文件,还可以继续包含子文件夹?在文件中不能再包含子文件或者子文件夹?文件夹??容器(Container) ?文件??叶子(Leaf) www . ChinaSA . info 组合模式概述?分析?当容器对象的某一个方法被调用时,将遍历整个树形结构,寻找也包含这个方法的成员对象并调用执行, 牵一而动百,其中使用了递归调用的机制来对整个结构进行处理?由于容器对象和叶子对象在功能上的区别, 在使用这些对象的代码中必须有区别地对待容器对象和叶子对象,而实际上大多数情况下客户端希望一致地处理它们,因为对于这些对象的区别对待将会使程序非常复杂 if (is 容器对象){ // 处理容器对象} else if (is 叶子对象){ // 处理叶子对象} www . ChinaSA . info 组合模式概述?如何一致地对待容器对象和叶子对象? 组合模式通过一种巧妙的设计方案使得用户可以一致性地处理整个树形结构或者树形结构的一部分,它描述了如何将容器对象和叶子对象进行递归组合,使得用户在使用时无须对它们进行区分,可以一致地对待容器对象和叶子对象。 www . ChinaSA . info 组合模式概述?组合模式定义?对象结构型模式组合模式: 组合多个对象形成树形结构以表示具有部分-整体关系的层次结构。组合模式让客户端可以统一对待单个对象和组合对象。 Composite Pattern: Compose objects into tree structures to represent part-whole hierarchies . Composite lets clients treat individual objects positions of objects uniformly . www . ChinaSA . info 组合模式概述?组合模式定义?又称为“部分-整体”(Part-Whole) 模式?将对象组织到树形结构中,可以用来描述整体与部分的关系 www . ChinaSA . info 组合模式的结构与实现?组合模式的结构 children ponent ++++ Operation () Add (Component c) Remove (Component c) GetChild (int i) ... Leaf + Operation () ... Composite ++++ Operation () Add (Component c) Remove (Component c) GetChild (int i) ... ponent child in children) { (); } www . ChinaSA . info 组合模式的结构与实现?组合模式的结构?组合模式包含以下 3个角色: ? Component (抽象构件) ? Leaf (叶子构件) ? Composite (容器构件)
C#设计模式组合模式 来自淘豆网m.daumloan.com转载请标明出处.