1 / 11
文档名称:

设计模式总结 - 组合模式.docx

格式:docx   大小:56KB   页数:11页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

设计模式总结 - 组合模式.docx

上传人:xxj16588 2016/8/26 文件大小:56 KB

下载得到文件列表

设计模式总结 - 组合模式.docx

相关文档

文档介绍

文档介绍:注: 文档内容基本上来自于网上,并加上自己的理解而成。有的觉得网友总结得非常好,就完全照搬下来,供学习之用。然而,有的摘抄并没有加上原链接和出处,请谅解。要点: ,它模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素内部结构解耦。 。我们可以将组合理解为两个层面的意思,一个是按“整体- 部分”的方式一个将复杂过程组成树型结构,另一个层面则是强调整个树的执行要有统一的接口,可以被递归的调用。 : OS 文件系统, JUnit 1.( Composite Pattern )组合模式详解 1: 组合模式(Composite Pattern) 有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。组合模式让你可以优化处理递归或分级数据结构。有许多关于分级数据结构的例子,使得组合模式非常有用武之地。关于分级数据结构的一个普遍性的例子是你每次使用电脑时所遇到的:文件系统。文件系统由目录和文件组成。每个目录都可以装内容。目录的内容可以是文件,也可以是目录。按照这种方式,计算机的文件系统就是以递归结构来组织的。如果你想要描述这样的数据结构,posite 。定义(GoF 《设计模式》) :将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和使用具有一致性。涉及角色: ponent 是组合中的对象声明接口,在适当的情况下, 实现所有类共有接口的默认行为。ponent 子部件。 在组合中表示叶子结点对象,叶子结点没有子结点。 posite 定义有枝节点行为,用来存储子部件,ponent 接口中实现与子部件有关操作,如增加(add) 和删除(remove) 等。适用性 posite 模式: 1 .你想表示对象的部分- 整体层次结构 2 .你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。总结组合模式解耦了客户程序与复杂元素内部结构,从而使客户程序可以向处理简单元素一样来处理复杂元素。如果你想要创建层次结构,并可以在其中以相同的方式对待所有元素,那么组合模式就是最理想的选择。本章使用了一个文件系统的例子来举例说明了组合模式的用途。在这个例子中,文件和目录都执行相同的接口,这是组合模式的关键。通过执行相同的接口,你就可以用相同的方式对待文件和目录,从而实现将文件或者目录储存为目录的子级元素。如图: 举例如下: [java] 1. package posite; 2. /** 3.* 文件名称: 4.* 创建人: Fei Wong 5.* 创建时间: 2012-06-26 6.* 电子邮箱: .* 8. */ 9. public abstract pany { 10. private String name; 11. 12. pany(String name) { 13. = name; 14. } 15. 16. pany() { 17. } 18. 19. public String getName() { 20. return name; 21. } 22. 23. public void setName(String name) { 24. = name; 25. } 26. 27. protected abstract void pany); 28. 29. protected abstract void pany); 30. 31. protected abstract void display(int depth); 32. } 33. 34. 35. 36. 37. package design. composite ; 38. 39. import ; 40. import ; 41. /** 42. * 文件名称: 43. * 创建人: Fei Wong 44. * 创建时间: 2012-06-26 45. * 电子邮箱: . * 47. */ 48. public class pany pany { 49. private pany> cList; 50. 51. public pany() { 52. cList = new pany>(); 53. } 54. 55. public pany(String name) { 56. super