GOF23的一些总结(九)

来源:互联网 发布:mac mini显示器接口 编辑:程序博客网 时间:2024/05/16 08:45

组合模式核心:把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象。
组合模式核心:抽象构件角色:定义了叶子和容器构件的共同点。
叶子构件角色:无子节点。
容器构建角色:有容器特征,可以包含子节点。

package com.dasenlin.cn;import java.util.ArrayList;import java.util.List;/** * 抽象的文件 * @author Administrator * */public interface AbstructFile {    void killVirus();//杀毒}/** * 叶子模式 * @author Administrator * */class InagesFile implements AbstructFile{    private String name;    public InagesFile(String name) {        super();        this.name = name;    }    @Override    public void killVirus() {        System.out.println("图像文件"+ name);    }}/** * 组合模式 * @author Administrator * */class Folder implements AbstructFile{    private String name;    private List <AbstructFile> list = new ArrayList<AbstructFile>();    public Folder(String name) {        super();        this.name = name;    }    public void add(AbstructFile file){        list.add(file);    }    public void remove(AbstructFile file){        list.remove(file);    }    public AbstructFile getChild(int index){        return list.get(index);    }    @Override    public void killVirus() {        System.out.println("文件名:"+name+"正在查杀");        for(AbstructFile file:list){            file.killVirus();        }    }}

测试

package com.dasenlin.cn;public class Client {    /**     * @param args     */    public static void main(String[] args) {        AbstructFile f2;         Folder f1 = new Folder("我的手长");         f2 = new InagesFile("大头贴");         f1.add(f2);         f1.killVirus();    }}
0 0
原创粉丝点击