一、结构性设计模式-组合模式
1.组合模式定义:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
2.组合模式的UML
3.组合模式示例
import java.util.ArrayList;
import java.util.List;
/**
* 组合中的对象声明接口,所有实现类的共有接口的默认行为
* @author shier
*
*/
public abstract class Company {
protected String name;
public Company(String name) {
this.name = name;
}
public abstract void add(Company c);//增加
public abstract void remove(Company c);//移除
public abstract void lineOfDuty();//履行职责,不同部门履行不同职责
}
/**
* 分公司类,树枝节点,继承Company抽象类,复写方法
* @author shier
*
*/
class ConcreteCompany extends Company{
private List<Company> list = new ArrayList<Company>();
public ConcreteCompany(String name) {
super(name);
}
@Override
public void add(Company c) {
list.add(c);
}
@Override
public void remove(Company c) {
list.remove(c);
}
@Override
public void lineOfDuty() {
for(Company c : list)
c.lineOfDuty();
}
}
/**
* 人力资源类,树叶节点,只有具体履行职责方法
* 透明方式(运行期可能出错)和安全方式(编译期出错)
* @author shier
*
*/
class HRDepartment extends Company{
public HRDepartment(String name) {
super(name);
}
@Override
public void add(Company c) {
}
@Override
public void remove(Company c) {
}
@Override
public void lineOfDuty() {
System.out.println("员工招聘培训管理");
}
}