设计模式的应用场景(11)--组合模式

组合模式是一种设计模式,用于用树形结构表示部分与整体的关系,以简化客户端代码。它提供了比继承更灵活的功能,允许客户端对单个对象和组合对象统一处理。在需要描述树形结构且忽略子对象与父对象区别的情况下适用。文章通过举例说明,如统计组织机构的总人数问题,展示如何使用组合模式避免复杂的多重继承结构。
摘要由CSDN通过智能技术生成

组合模式

定义:把部分和整体的关系用树形结构表示,从而使客户端能把一个一个的部分对象和由它们组合起来的整体对象采用同样方式处理。它也是继承的一个替代方案。

优点:组合模式能提供比继承关系更灵活的功能,并且可以灵活组合子对象和父对象的关系从而使客户端的调用简单,客户端可以一致地使用组合结构或其中单个对象,简化了客户端代码。

缺点:很难限制向集合中添加的新组件的类型。

使用时机:当系统要描述的对象是树形结构,并且要在客户端忽略掉子对象和父对象的区别,就需要使用组合模式。

小巩需要统计各个子机构的总人数,如果使用多重继承,为每个子机构创建一个对象,每个级别的子机构为一个类,都继承于父类的机构类,这样代码将会变成很长。
下面使用组合模式
先定义一个抽象的组织机构类


public interface Organ {
   
    int personCount();
}

//子机构1
public class LeafDepartment1 implements Organ {
   
    public int personCount() {
   
        return 100;
    }
}

//子机构2
public class
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值