设计模式-组合模式

来源:互联网 发布:手机dts音乐播放软件 编辑:程序博客网 时间:2024/06/03 21:30

组合模式是一种结构型模式。组合模式的结构类似于数据结构中的树。

当我们需要将很多个组件组合成一个组件时,则需要这种模式。


抽象父类

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());    }}