组合模式

本人为菜鸟,仅供参考,只为自己记录学习

作用

运用于树形结构中,使复杂元素的内部结构解耦

优点

高层模块调用简单、节点自由添加

缺点

都是实现类,违法了依赖倒置原则

使用场景

部分、整体场景,如树形菜单,文件、文件夹的管理

员工类

@AllArgsConstructor
@Data
@ToString
public class Employee {
    private String name;
    private String dept;
    private int salary;
    private List<Employee> subordinates;

    public void add(Employee employee) {
        subordinates.add(employee);
    }

    public void remove(Employee employee) {
        subordinates.remove(employee);
    }
}

测试类

public class CompositeTest {
    public static void main(String[] args) {
        Employee luo = new Employee("小罗", "develop", 3000, null);
        Employee he = new Employee("老贺", "develop", 5000, null);
        Employee wa = new Employee("老王", "develop", 4500, null);
        List<Employee> huList = new ArrayList<>();
        huList.add(luo);
        Employee hu = new Employee("老胡", "master develop", 14000, huList);
        List<Employee> yueList = new ArrayList<>();
        yueList.add(he);
        yueList.add(wa);
        Employee yue = new Employee("老岳", "master develop", 12000, yueList);
        List<Employee> shenList = new ArrayList<>();
        shenList.add(hu);
        shenList.add(yue);
        Employee shen = new Employee("沈总", "CEO", 30000, shenList);
        System.out.println(shen);
    }
}

打印结果
Employee(name=沈总, dept=CEO, salary=30000, subordinates=[Employee(name=老胡, dept=master develop, salary=14000, subordinates=[Employee(name=小罗, dept=develop, salary=3000, subordinates=null)]), Employee(name=老岳, dept=master develop, salary=12000, subordinates=[Employee(name=老贺, dept=develop, salary=5000, subordinates=null), Employee(name=老王, dept=develop, salary=4500, subordinates=null)])])

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值