组合模式(composite)

概念:是用于把一组相似的对象当作一个单一的对象。组合模式依据***树形结构***来组合对象
用来表示部分以及整体层次。 属于结构型模式 多用于递归
组合模式(Composite Pattern):组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式又可以称为“整体—部分”(Part-Whole)模式,它是一种对象结构型模式。

树状实体

      public class Employee {
	    private int age;
	    private String name;
	    private String dept;
	    private List<Employee> employeeList=new ArrayList<>();
	
	
	    public Employee(int age, String name, String dept) {
	        this.age = age;
	        this.name = name;
	        this.dept = dept;
	    }
	
	    public void add(Employee employee){
	        employeeList.add(employee);
	    }
	    public void remove(Employee employee){
	        employeeList.remove(employee);
	    }
	
	    @Override
	    public String toString() {
	        return "Employee{" +
	                "age=" + age +
	                ", name='" + name + '\'' +
	                ", dept='" + dept + '\'' +
	                ", employeeList=" + employeeList +
	                '}';
	    }
	
	
	    public static  boolean hasChildren(Employee employee){
	        if(employee.employeeList.size()>0){
	            return true;
	        }
	        return  false;
	    }
	    public static void getEmployee(Employee employee){
	        System.out.println(employee);
	        if(hasChildren(employee)){
	            for(Employee e:employee.employeeList){
	                getEmployee(e);
	            }
	        }
	    }
***函数测试***
 public static void main(String[] args) {
	        Employee e=new Employee(1,"z1","z1");
	        Employee e1=new Employee(11,"z11","z11");
	        Employee e2=new Employee(12,"z12","z12");
	        Employee e21=new Employee(212,"z212","z212");
	        Employee e23=new Employee(213,"z213","z213");
	        e1.add(e21);
	        e1.add(e23);
	        e.add(e1);
	        e.add(e2);
	        getEmployee(e);

    }
总结:该模式理解起来简单,就是在用的时候可能会有点难度,我对与递归算法是比较懵逼。不然我也不会记载一下了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值