设计模式之组合模式

来源:互联网 发布:怎样申请淘宝子账号 编辑:程序博客网 时间:2024/06/05 15:16

组合模式的使用场景:

把整体和部分的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象构件和整体(由于实现统一的抽象构件接口cmponent)

组合模式的核心:

1.抽象构件角色(component) 定义叶子和容器的共同点
2.容器构件角色(composite) 有字节点和容器特点
3.叶子构件角色(leaf) 没有子节点

实现代码:

//componentpublic interface AbstractFile {    void killVirus();  //杀毒}//leafclass ImageFile implements AbstractFile {    private String name;    public ImageFile(String name) {        super();        this.name = name;    }    @Override    public void killVirus() {        System.out.println("---图像文件:"+name+",进行查杀!");    }}class TextFile implements AbstractFile {    private String name;    public TextFile(String name) {        super();        this.name = name;    }    @Override    public void killVirus() {        System.out.println("---文本文件:"+name+",进行查杀!");    }}class VideoFile implements AbstractFile {    private String name;    public VideoFile(String name) {        super();        this.name = name;    }    @Override    public void killVirus() {        System.out.println("---视频文件:"+name+",进行查杀!");    }}//compositeclass Folder implements AbstractFile {    private String name;    //定义容器,用来存放本容器构建下的子节点    private List<AbstractFile> list = new ArrayList<AbstractFile>();    public Folder(String name) {        super();        this.name = name;    }    public void add(AbstractFile file){        list.add(file);    }    public void remove(AbstractFile file){        list.remove(file);    }    public AbstractFile getChild(int index){        return list.get(index);    }    @Override    public void killVirus() {        System.out.println("---文件夹:"+name+",进行查杀");        for (AbstractFile file : list) {            file.killVirus();//这是一个递归        }       }}

开发中的使用场景:

这里写图片描述
html也是

UML图

这里写图片描述

junit测试框架底层设计
这里写图片描述