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