组合模式

本文转载:https://blog.csdn.net/qq_20143059/article/details/102593141

定义:将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。(为具有上下级关系两类 提供共同的接口,创建了属性结构)

目的:1.使两个对象拥有属性结构。

           2.使上下级的类拥有相同的接口。

优点:1.屏蔽了类的不一致,客户可以通过相同的方式调用不同的层级。

           2.对客户实现了封装

           3.提供了统一的接口

缺点:1.其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒转原则

           2. 使得设计更加复杂。客户端需要花更多时间理清类之间的层次关系

类图:

代码:

component(上级关系类的共同抽象类)

public abstract class ComponentPerson {
    
    protected String name;
    
    public ComponentPerson (String name) {
        this.name = name;
    }


 
    //进行招聘
    public abstract void recruitPerson();
    
    //解雇
    public abstract void firePerson();
    
    //工作
    public abstract void work(int depth);
    
}

left(子类 员工类)

public class Leaf extends ComponentPerson {
 
    public Leaf(String name) {
        super(name);
    }
 
    @Override
    public void recruitPerson() {
        //不能招聘
        throw new Exception();
    }
 
    @Override
    public void firePerson() {
        //不能解雇
        throw new Exception();
    }
 
    @Override
    public void work() {      
        System.out.println("努力当员工");
    }
 
}

 


Composite(父类 老板类)

public class Composite extends ComponentPerson {
 
    public Composite(String name) {
        super(name);
    }
 
 
    @Override
    public void recruitPerson() {
        System.out.println("小伙子我看好你");  
    }
 
    @Override
    public void firePerson() {
        System.out.println("对不起 你被开除了");  
    }
 
    @Override
    public void work() {      
        System.out.println("努力当好老板");                
    }
 
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值