设计模式(十)——组合模式(Composite )
是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。简单来说就是树形结构
实现
组织中员工的层次结构。
Employee实体类,其中属性包含一个Employee的列表
public class Employee {
String name;
String dept;
int age;
List<Employee> employeeList;
public Employee(String name, String dept, int age) {
this.name = name;
this.dept = dept;
this.age = age;
this.employeeList = new ArrayList<Employee>();
}
public Employee add(Employee employee){
this.employeeList.add(employee);
return this;
}
//遍历
public void Ergodic(){
System.out.println(this.toString());
for(Employee e:employeeList){
e.Ergodic();
}
}
@Override
public String toString() {
return "Employee{" +
"name='" + name + '\'' +
", dept='" + dept + '\'' +
", age=" + age +
'}';
}
}
public class Main {
public static void main(String[] args) {
Employee CEO = new Employee("zhangsan","CEO",45);
Employee leder1 = new Employee("lisi","leder", 30);
Employee leder2 = new Employee("lisan","leder", 32);
CEO.add(leder1).add(leder2);
Employee employee1 = new Employee("wangwu","empoyee", 30);
Employee employee2 = new Employee("wangliu","empoyee", 20);
Employee employee3 = new Employee("wangqi","empoyee", 18);
Employee employee4 = new Employee("wangba","empoyee", 25);
leder1.add(employee1).add(employee2);
leder2.add(employee3).add(employee4);
CEO.Ergodic();
}
}