组合模式是一种结构型模式。组合模式的结构类似于数据结构中的树。
当我们需要将很多个组件组合成一个组件时,则需要这种模式。
抽象父类
public abstract class MyGraphic { protected abstract void draw(); protected abstract void add(MyGraphic myGraphic); protected abstract void remove(MyGraphic myGraphic); }叶子节点
public class MyLine extends MyGraphic{ protected void draw() { System.out.println("我画了一条线"); } protected void add(MyGraphic myGraphic) { } protected void remove(MyGraphic myGraphic) { } }
public class MyText extends MyGraphic{ protected void draw() { System.out.println("我写了个字"); } protected void add(MyGraphic myGraphic) { } protected void remove(MyGraphic myGraphic) { } }
组合类节点
public class MyPicture extends MyGraphic{ private List<MyGraphic> list; protected void draw() { System.out.println("显示张图片"); } protected void add(MyGraphic myGraphic) { list.add(myGraphic); } protected void remove(MyGraphic myGraphic) { list.remove(myGraphic); } }进行组合
public class Client { public static void main(String[] args){ MyGraphic myGraphic = new MyPicture(); myGraphic.add(new MyLine()); myGraphic.add(new MyPicture()); } }