组合模式实例分公司

package zuhe;

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 display(String str);
public abstract void LineOfDuty();
}

package zuhe;

import java.awt.List;
import java.util.ArrayList;

public class ConcreteCompany extends Company {
private ArrayList<Company>children=new ArrayList<Company>();
	public ConcreteCompany(String name)
	{super(name);
		
	}
@Override
	public void Add(Company c) {
		// TODO 自动生成的方法存根
children.add(c);
	}

	@Override
	public void Remove(Company c) {
		// TODO 自动生成的方法存根
children.remove(c);
	}

	@Override
	public void display(String str) {
		str+="-";
		System.out.println(str+name);
		for(Company component:children)
		{component.display(str);
		}
	}

	@Override
	public void LineOfDuty() {
	for(Company component:children)
	{component.LineOfDuty();
	}

}
}
package zuhe;

public class FinanceDepartment extends Company {

	public FinanceDepartment(String name) {
		super(name);
		// TODO 自动生成的构造函数存根
	}

	@Override
	public void Add(Company c) {
		// TODO 自动生成的方法存根

	}

	@Override
	public void Remove(Company c) {
		// TODO 自动生成的方法存根

	}

	@Override
	public void display(String str) {
	str+="-";
	System.out.println(str+name);

	}

	@Override
	public void LineOfDuty() {
		System.out.println(name+" 公司收支管理");

	}

}
package zuhe;

public class HRdepartmnet extends Company {

	public HRdepartmnet(String name) {
		super(name);
		// TODO 自动生成的构造函数存根
	}

	@Override
	public void Add(Company c) {
		// TODO 自动生成的方法存根

	}

	@Override
	public void Remove(Company c) {
		// TODO 自动生成的方法存根

	}

	@Override
	public void display(String str) {
	str+="-";
	System.out.println(str+name);

	}

	@Override
	public void LineOfDuty() {
	System.out.println(name+" "+"员工招聘");

	}

}
package zuhe;

public class Test {
public static void main(String args[])
{ConcreteCompany root=new ConcreteCompany("北京总公司");
root.Add(new HRdepartmnet("总公司人力资源部"));
root.Add(new FinanceDepartment("总公司财务部"));
ConcreteCompany comp=new ConcreteCompany("上海分公司");
comp.Add(new  HRdepartmnet("上海分公司人力资源部"));
comp.Add(new  FinanceDepartment("上海分公司财务部"));
root.Add(comp);
ConcreteCompany comp2=new ConcreteCompany("南京办事处");
comp2.Add(new  HRdepartmnet("南京办事处人力资源部"));
comp2.Add(new  FinanceDepartment("南京办事处财务部"));
comp.Add(comp2);
ConcreteCompany comp3=new ConcreteCompany("杭州办事处");
comp3.Add(new  HRdepartmnet("杭州办事处人力资源部"));
comp3.Add(new  FinanceDepartment("杭州办事处财务部"));
comp.Add(comp3);
root.display("");
root.LineOfDuty();
}
}

猜你喜欢

转载自blog.csdn.net/sdauguanweihong/article/details/89916124