组合模式(Composite Pattern)
Compose Objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly。
1、Component
-为组合中的对象声明接口。
-在适当的情况下,实现所有类共有接口的缺省行为。
-声明一个接口用于访问和管理Component的子组件。
-(可选)在递归结构中定义一个接口,用于访问一个父部件,并在合适的情况下实现它。
2、Leaf
-在组合中表示叶节点对象,叶节点没有子节点。
-在组合中定义图元对象的行为。
3、Composite
-定义有子部件的那些部件的行为。
-存储子部件。
-在Component接口中实现与子部件有关的操作。
4、Client
-通过Component接口操纵组合部件的对象。
interface Component { public void add(Component c); public void remove(Component c); public Component getChild(int i); public void operation(); }
class Leaf implements Component { private String name; public Leaf(String name) { this.name=name; } public void add(Component c){ } public void remove(Component c){ } public Component getChild(int i) { return null; } public void operation() { System.out.println("leaf:"+name); } }
class Composite implements Component { private ArrayList<Component> children=new ArrayList<Component>(); public void add(Component c) { children.add(c); } public void remove(Component c) { children.remove(c); } public Component getChild(int i) { return children.get(i); } public void operation() { for(Object obj:children) { ((Component)obj).operation(); } } }
《设计模式:可复用面向对象软件的基础》
原文:https://www.cnblogs.com/diameter/p/13196157.html