前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java设计模式--组合

java设计模式--组合

作者头像
曼路
发布2018-10-18 15:31:35
5030
发布2018-10-18 15:31:35
举报
文章被收录于专栏:浪淘沙浪淘沙

import java.util.ArrayList; import java.util.List;

public class ComponentDemo { public abstract class Component { String name;

代码语言:javascript
复制
    public abstract void add(Component c);  

    public abstract void remove(Component c);  

    public abstract void eachChild();  
}  

// 组合部件类  
public class Leaf extends Component {  

    // 叶子节点不具备添加的能力,所以不实现  
    @Override  
    public void add(Component c) {  
        // TODO Auto-generated method stub  
        System.out.println("");  
    }  

    // 叶子节点不具备添加的能力必然也不能删除  
    @Override  
    public void remove(Component c) {  
        // TODO Auto-generated method stub  
        System.out.println("");  
    }  

    // 叶子节点没有子节点所以显示自己的执行结果  
    @Override  
    public void eachChild() {  
        // TODO Auto-generated method stub  
        System.out.println(name + "执行了");  
    }  

}  

// 组合类  
public class Composite extends Component {  

    // 用来保存节点的子节点  
    List<Component> list = new ArrayList<Component>();  

    // 添加节点 添加部件  
    @Override  
    public void add(Component c) {  
        // TODO Auto-generated method stub  
        list.add(c);  
    }  

    // 删除节点 删除部件  
    @Override  
    public void remove(Component c) {  
        // TODO Auto-generated method stub  
        list.remove(c);  
    }  

    // 遍历子节点  
    @Override  
    public void eachChild() {  
        // TODO Auto-generated method stub  
        System.out.println(name + "执行了");  
        for (Component c : list) {  
            c.eachChild();  
        }  
    }  
}  

public static void main(String[] args) {  
    ComponentDemo demo = new ComponentDemo();  
    // 构造根节点  
    Composite rootComposite = demo.new Composite();  
    rootComposite.name = "根节点";  

    // 左节点  
    Composite compositeLeft = demo.new Composite();  
    compositeLeft.name = "左节点";  

    // 构建右节点,添加两个叶子几点,也就是子部件  
    Composite compositeRight = demo.new Composite();  
    compositeRight.name = "右节点";  
    Leaf leaf1 = demo.new Leaf();  
    leaf1.name = "右-子节点1";  
    Leaf leaf2 = demo.new Leaf();  
    leaf2.name = "右-子节点2";  
    compositeRight.add(leaf1);  
    compositeRight.add(leaf2);  

    // 左右节点加入 根节点  
    rootComposite.add(compositeRight);  
    rootComposite.add(compositeLeft);  
    // 遍历组合部件  
    rootComposite.eachChild();  
}  

}

这里写图片描述
这里写图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年04月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档