组合模式
1.公司和部门的抽象类
/**
* @Desc:部门的基类
* @author zy
* @date 2016年8月12日上午11:11:39
*/
public abstract class Department {
public abstract void responsibility();//公司的职责
}
/**
* @Desc:公司的实体
* @author zy
* @date 2016年8月12日上午11:07:28
*/
public class Company {
public Company(Department technologyDepartment,Department operationDepartment,Department saleDepartment){
if(null != technologyDepartment){
System.out.println("技术部组合成功");
}
if(null != operationDepartment){
System.out.println("运营部组合成功");
}
if(null != saleDepartment){
System.out.println("销售部组合成功");
}
System.out.println("公司初始化成功");
}
}
2.部门的具体实现
/**
* @Desc:运营部门
* @author zy
* @date 2016年8月12日上午11:17:50
*/
public class OperationDepartment extends Department{
@Override
public void responsibility() {
System.out.println("我是运营部,我是公司的一部分");
}
}
/**
* @Desc:销售部门
* @author zy
* @date 2016年8月12日上午11:18:59
*/
public class SaleDepartment extends Department{
@Override
public void responsibility() {
System.out.println("我是销售部,我是公司的一部分");
}
}
/**
* @Desc:技术部
* @author zy
* @date 2016年8月12日上午11:16:48
*/
public class TechnologyDepartment extends Department{
@Override
public void responsibility() {
System.out.println("我是技术部,我是公司的一部分");
}
}
3.测试
public class M {
public static void main(String[] args) {
Department technologyDepartment = new TechnologyDepartment();
Department operationDepartment = new OperationDepartment();
Department saleDepartment = new SaleDepartment();
Company company = new Company(technologyDepartment, operationDepartment, saleDepartment);
}
}
组合模式,阐述这个模式最好的栗子,就是公司的组成。从大的角度划分的话,每个公司都能理解为 技术+销售+运营的构成体
使用组合模式,比使用继承的方式更加轻巧和灵活,减少了使用继承的高耦合