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
这就相当于三个类,或者说是三个文件夹
0
1
11 12
121 122
看的差不多了吧,最后代码实现啊
3、代码实现
商城那个分类等级就不写了,也不写创建树形结构的文件夹代码了,写一个最简单的吧,属于领导之间的管理吧,这个是从网上找的,可能都写在一个类里面了,不过很能够看懂的
package zuhe;
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+" ]");
}
}
package zuhe;
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);
}
}
}
}
转载于:https://my.oschina.net/mdxlcj/blog/1799989