java23种设计模式三(连载)
三、组合模式
组合模式,也叫合成模式,树模式,它是一组对象的组合,这些对象可以是容器对象,表现为组的概念。
组合模式的意图是为了保证客户端调用单对象于组合对象的一致性。
涉及角色:
1.Component 是组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component
子部件。
2.Leaf 在组合中表示叶子结点对象,叶子结点没有子结点。
3.Composite 定义有枝节点行为,用来存储子部件,在Component接口中实现与子部件有关操作,如增加(add)和删除(remove)等。
适用性
以下情况下适用组合模式:
1.你想表示对象的部分-整体层次结构
2.你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。
以下代码体现了组合模式的思想:
public static void main(String[] args) {Tree root = new TreeNode.Builder().text("根节点").build();Tree parent1 = new TreeNode.Builder().text("父节点1").build();Tree parent2 = new TreeNode.Builder().text("父节点2").build();root.add(parent1);root.add(parent2);Tree son11 = new TreeNode.Builder().text("子节点11").build();Tree son12 = new TreeNode.Builder().text("子节点12").build();parent1.add(son11);parent1.add(son11);System.out.println(root.toString());}