首页 > 其他 > 详细

组合模式

时间:2020-06-26 21:08:09      阅读:62      评论:0      收藏:0      [点我收藏+]

名称:

    组合模式(Composite Pattern)

 

问题:

    Compose Objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly。

 

解决方案:

    

1、 模式的参与者

    1、Component

    -为组合中的对象声明接口。

    -在适当的情况下,实现所有类共有接口的缺省行为。

    -声明一个接口用于访问和管理Component的子组件。

    -(可选)在递归结构中定义一个接口,用于访问一个父部件,并在合适的情况下实现它。

    2、Leaf

    -在组合中表示叶节点对象,叶节点没有子节点。

    -在组合中定义图元对象的行为。

    3、Composite

    -定义有子部件的那些部件的行为。

    -存储子部件。

    -在Component接口中实现与子部件有关的操作。

    4、Client

    -通过Component接口操纵组合部件的对象。

2.实现方式

interface Component
{
    public void add(Component c);
    public void remove(Component c);
    public Component getChild(int i);
    public void operation();
}
class Leaf implements Component
{
    private String name;
    public Leaf(String name)
    {
        this.name=name;
    }
    public void add(Component c){ }           
    public void remove(Component c){ }   
    public Component getChild(int i)
    {
        return null;
    }   
    public void operation()
    {
        System.out.println("leaf:"+name); 
    }
}
class Composite implements Component
{
    private ArrayList<Component> children=new ArrayList<Component>();   
    public void add(Component c)
    {
        children.add(c);
    }   
    public void remove(Component c)
    {
        children.remove(c);
    }   
    public Component getChild(int i)
    {
        return children.get(i);
    }   
    public void operation()
    {
        for(Object obj:children)
        {
            ((Component)obj).operation();
        }
    }    
}

参考资料

《设计模式:可复用面向对象软件的基础》

组合模式

原文:https://www.cnblogs.com/diameter/p/13196157.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!