组合模式

来源:互联网 发布:淘宝访问量突然下降 编辑:程序博客网 时间:2024/06/06 02:56

这里写图片描述

这里写图片描述

这里写图片描述

/** * 组合模式 1.优点:统一处理 *  * 抽象组件: 1.提取叶子和容器的共同部分 *  * @author zhangjianbin *  */public interface AbstractFile {    // 杀毒    void killVirus();}/** * 叶子组件 *      下面没有孩子了 * @author zhangjianbin * */class ImageFile implements AbstractFile {    private String name;    public ImageFile(String name) {        super();        this.name = name;    }    @Override    public void killVirus() {        System.err.println("查杀图片文件,名子:"+this.name);    }}/** * 容器节点 *      下面还有孩子 * @author zhangjianbin * */class FolderFile implements AbstractFile {    private String name;    //定义容器,用于 存放孩子节点    private List<AbstractFile> list = new ArrayList<AbstractFile>();    public FolderFile(String name) {        super();        this.name = name;    }    //添加子节点    public void add(AbstractFile file){        this.list.add(file);    }    //移除子节点    public void remove(AbstractFile file){        this.list.remove(file);    }    //获取子节点    public AbstractFile getChidFile(int index){        return this.list.get(index);    }    @Override    public void killVirus() {        System.err.println("查杀文件夹,名子:"+this.name);        //遍历子文件夹,杀毒        for(AbstractFile file:list){            file.killVirus();        }    }}
public class Client {    public static void main(String[] args) {            AbstractFile f1,f2,f3;              FolderFile file = new FolderFile("我的文件夹");        f1 = new ImageFile("图片.jpg");        f2 = new ImageFile("hello.jpg");        file.add(f1);        file.add(f2);        file.killVirus();           }}
0 0
原创粉丝点击