设计模式—组合模式
定义
将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性
代码
抽象通用功能
1 2 3 4 5
| public abstract class Component { public void doSomething(){ System.out.println("do something"); } }
|
叶子构件
1 2 3 4 5 6
| public class Leaf extends Component { @Override public void doSomething() { System.out.println("leaf do something"); } }
|
树枝构件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public class Composite extends Component { private ArrayList<Component> componentArrayList = new ArrayList<>();
public void add(Component component){ this.componentArrayList.add(component); }
public void remove(Component component){ this.componentArrayList.remove(component); }
public ArrayList<Component> getChildren() { return this.componentArrayList; } }
|
测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| public class CompositeTest {
@Test public void testComposite(){ Composite root = new Composite(); Composite branch = new Composite(); Leaf leaf = new Leaf(); root.add(branch); branch.add(leaf);
display(root); }
public static void display(Composite root){ for (Component component : root.getChildren()) { if(component instanceof Leaf){ component.doSomething(); }else{ display((Composite) component); } } } }
|