概念:是用于把一组相似的对象当作一个单一的对象。组合模式依据***树形结构***来组合对象
用来表示部分以及整体层次。 属于结构型模式 多用于递归
组合模式(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);
}
总结:该模式理解起来简单,就是在用的时候可能会有点难度,我对与递归算法是比较懵逼。不然我也不会记载一下了