1、概念
代码解释
public class Student { public String name; public String sex; public List<Student> list; }
这个就是组合设计模式,一个Student里面包含多个Student类。
2、场景
2.1、商城类项目中很常见,文件夹,分类项目都是一样,举个例子
这样的列子很多,当然还有管理系统中,领导人,或者我们钉钉软件,你的领导惯着十几个人,他也有领导,对于这种具有相同属性的对象,很适合组合设计模式。
public class Fuzhuang { public String id; public String parentId; public String desc; }
这个很简单的类,id就是一个对象的id这个很简单,desc是对它的一个描述,也很简单能懂,最后是这个parentId,他的意思就是父id,举例。
parentId id 0 1 1 11 1 12 12 121 12 122
3、代码实现
商城那个分类等级就不写了,也不写创建树形结构的文件夹代码了,写一个最简单的吧,属于领导之间的管理吧,这个是从网上找的,可能都写在一个类里面了,不过很能够看懂的。
import java.util.ArrayList; import java.util.List; public class Employee { private String name; private String dept; private int salary; private List<Employee> subordinates; //构造函数 public Employee(String name,String dept, int sal) { this.name = name; this.dept = dept; this.salary = sal; subordinates = new ArrayList<Employee>(); } public void add(Employee e) { subordinates.add(e); } public void remove(Employee e) { subordinates.remove(e); } public List<Employee> getSubordinates(){ return subordinates; } public String toString(){ return ("Employee :[ Name : "+ name +", dept : "+ dept + ", salary :" + salary+" ]"); } }
public class Main { public static void main(String[] args){ Employee CEO = new Employee("John","CEO", 30000); Employee headSales = new Employee("Robert","Head Sales", 20000); Employee headMarketing = new Employee("Michel","Head Marketing", 20000); Employee clerk1 = new Employee("Laura","Marketing", 10000); Employee clerk2 = new Employee("Bob","Marketing", 10000); Employee salesExecutive1 = new Employee("Richard","Sales", 10000); Employee salesExecutive2 = new Employee("Rob","Sales", 10000); CEO.add(headSales); CEO.add(headMarketing); headSales.add(salesExecutive1); headSales.add(salesExecutive2); headMarketing.add(clerk1); headMarketing.add(clerk2); //打印该组织的所有员工 System.out.println(CEO); for (Employee headEmployee : CEO.getSubordinates()) { System.out.println(headEmployee); for (Employee employee : headEmployee.getSubordinates()) { System.out.println(employee); } } } }