组合模式

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);
		
	}
}


组合模式,阐述这个模式最好的栗子,就是公司的组成。从大的角度划分的话,每个公司都能理解为 技术+销售+运营的构成体

使用组合模式,比使用继承的方式更加轻巧和灵活,减少了使用继承的高耦合








posted @ 2016-08-12 11:38  Bug开发攻城狮  阅读(90)  评论(0编辑  收藏  举报