组合模式

一、组合模式的概念

组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。掌握组合模式的重点是要理解清楚 “部分/整体” 还有 ”单个对象“ 与 "组合对象" 的含义。

抽象组件(Component):给参加组合的对象定义出公共的接口及其默认行为,可以用来管理所有的子对象。合成对象通常把它所包含的子对象当做类型为Component的对象。

树枝组件(Composite):代表参加组合的有下级子对象的对象。

树叶组件(Leaf):树叶对象是没有下级子对象的对象,定义出参加组合的原始对象的行为。

 

二、组合模式的实现 

//抽象组件
public abstract class Component{

    public String name;

    public Component(String name){
        this.name = name;
    }

    public void Add(Component component){}

    public void Remove(int index){}

    public abstract void Display();
}
//树枝组件
public class Composite extends Component{

    private ArrayList<Component> list = new ArrayList<>();

    public Composite(String name){
        super(name);
    }
    
    public void Add(Component component){
        list.add(component);
    }

    public void Remove(int index){
        list.remove(index);
    }

    public void Display(){
        for(Component c:list){
            System.out.println(c.name);
        }
    }
}
//树叶组件
public class Leaf extends Component{
    
    public Leaf(String name){
        super(name);
    }
    
    public void Display(){
         System.out.println(this.name);
    }
}

 

三、组合模式的应用

计算机的文件系统由文件和目录组成,目录下面也可以包含文件或目录,计算机的文件系统是递归结构,可以使用组合模式来进行组织。

 

四、组合の其他问题

1、客户端可以一致的使用组合结构或其中单个对象

2、设计更加抽象,业务规则复杂的对象,组合模式实现就越困难,且不是所有的方法都与叶子对象关联

 

五、Reference

《JAVA与模式》之合成模式

设计模式(七)组合模式Composite(结构型)

设计模式读书笔记-----组合模式

 

六、Resource

大话设计模式

Head First 设计模式

Java设计模式

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值