简介
组合模式是结构型的模式一种,其根据树型结构来描述对象,以此来表示个体与整体的关系,其实现也比较简单。
Demo实现
对于一个公司,有一个名称,然后下面有很多BG,每个BG下面又有很多部门,此用组合模式可以表示为:
import java.util.ArrayList;
import java.util.List;
public class Company {
private String name;
private List<Company> subordinates;
public Company(String name) {
this.name = name;
this.subordinates = new ArrayList<>();
}
public void add(Company subordinate) {
this.subordinates.add(subordinate);
}
@Override
public String toString() {
return "Company{" +
"name='" + name + '\'' +
", subordinates=" + subordinates +
'}';
}
}
客户端调用如下:
public class Test {
public static void main(String[] args) {
Company company = new Company("apple");
Company phoneBG = new Company("phoneBG");
Company phoneToolDept = new Company("phoneToolDept");
Company phoneDesignDept = new Company("phoneDesignDept");
phoneBG.add(phoneToolDept);
phoneBG.add(phoneDesignDept);
company.add(phoneBG);
Company padBG = new Company("padBG");
Company padToolDept = new Company("padToolDept");
Company padDesignDept = new Company("padDesignDept");
padBG.add(padDesignDept);
padBG.add(padToolDept);
company.add(padBG);
System.out.println(company);
/**
* Company{name='apple', subordinates=[Company{name='phoneBG', subordinates=[Company{name='phoneToolDept', subordinates=[]}, Company{name='phoneDesignDept', subordinates=[]}]}, Company{name='padBG', subordinates=[Company{name='padDesignDept', subordinates=[]}, Company{name='padToolDept', subordinates=[]}]}]}
*/
}
}