设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置原则 设计模式六大原则(4):接口隔离原则 设计模式六大原则(5):迪米特法则 设计模式六大原则(6):开闭原则
CompositePattern,UML抽象图百度找,代码实现如下
使用组合设计模式完成此题,某公司的组织结构采用组合设计模式来设计,得到类图如下。其中Company为抽象类,定义了在组织结构上添加(Add)和删除(Delete)部门的方法接口。类ConcreteCompany表示具体的公司,可以设置不同的部门。类HRDepartment和类FianceDepartment分别表示人力资源部和财务部。编程模拟实现。
抽象构件
package CompositePattern;
public interface Company {
public void add(Company component);
public void delete(Company component);
public String info();
}
构件
package CompositePattern.component;
import CompositePattern.Company;
public class FianceDepartment implements Company{
@Override
public void add(Company component) {
}
@Override
public void delete(Company component) {
}
@Override
public String info(){
return "我是财务部";
}
}
package CompositePattern.component;
import CompositePattern.Company;
public class HRDepartment implements Company{
@Override
public void add(Company component) {
// TODO Auto-generated method stub
}
@Override
public void delete(Company component) {
// TODO Auto-generated method stub
}
@Override
public String info(){
return "我是人力资源部";
}
}
根构件(组合的目标)
package CompositePattern;
import java.util.ArrayList;
import java.util.List;
public class ConcreteCompany implements Company{
private List<Company> mylist = new ArrayList<Company>();
@Override
public void add(Company component) {
mylist.add(component);
}
@Override
public void delete(Company component) {
mylist.remove(component);
}
@Override
public String info() {
for(int i=0;i<mylist.size();i++) {
System.out.println(mylist.get(i).info());
}
return "";
}
}
测试类
package CompositePattern;
import CompositePattern.component.FianceDepartment;
import CompositePattern.component.HRDepartment;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
//构造公司这个根
Company rootComponent = new ConcreteCompany();
//添加两个叶子几点,也就是子部件
Company leaf1 = new FianceDepartment();
Company leaf2 = new HRDepartment();
rootComponent.add(leaf1);
rootComponent.add(leaf2);
rootComponent.info();
}
}
别嫌弃我没写注释,这个代码很简单,注释省略,嘿嘿。