标签(空格分隔):组合模式 透明方式 安全方式
组合模式: 将对象组合成树形结构,以表示整体-部分的结构, 使得用户对单个对象和组合对象的使用具有一致性
组合模式的应用比较常见与带有组织架构的地方,特别在那些希望忽略是由这个整体中哪个部分来完成自己期望任务的时候使用。例如:我们去生病了,需要去医院,但是不知道自己的病症要到哪个部门去检查和治疗,我们只需要关心将自己的病治好,这个时候医院可以看作一个组合模式;医院由各个部门组合而成,病人在看病前并不需要关心自己需要去哪,只需要知道自己去医院治病即可。
组合模式主要解决:模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。
优点:调用模块简单,处理一个元素和处理多个元素函数是一样的。多个元素被组合成这一个元素来执行。
树结构的实现方式有两种:
- 透明模式:根节点和叶子节点被认为是相同的,都提供“ADD”,"REMOVE"方法,但是这两个方法对叶子节点几乎没有作用(但是也不能避免在叶子节点增加新叶子节点)。由于这种方式生成的树,所有节点都拥有ADD/REMOVE方法,外界有必要的可以直接使用。
- 安全模式:根节点和叶子节点被被认为是相同的,但是不都提供“ADD”,"REMOVE"方法,这种情况下生成的组合树,对于调用者来说只有根节点可以获取和调用。这种方式生成的树透明性差,但是也变相增加了这种组合树的安全。