8.组合模式Composite

意图:将对象组合成树型结构的层次,调用者在调用单个对象和组合对象具有一致性


公司抽象类
/**
* Created by shixin-pc on 2018/4/21.
* 公司的抽象类
*/

public abstract class Company {
private String name ;

public Company(String name) {
this . name = name;
}

public void setName(String name) {
this . name = name;
}

public String getName() {
return name ;
}

public abstract void add(Company c);

public abstract void remote(Company c);

public abstract void show(); //名字

public abstract void responsibility(); //履新的职责

}


公司的具体实现类
/**
* Created by shixin-pc on 2018/4/21.
* 具体的公司类
*/

public class ConcreteCompany extends Company {
private List<Company> mCompany = new ArrayList<>();

public ConcreteCompany(String name) {
super (name);
}

@Override
public void add(Company c) {
mCompany .add(c);
}

@Override
public void remote(Company c) {
mCompany .remove(c);
}

@Override
public void show() {
for ( int i = 0 ; i < mCompany .size(); i++) {
mCompany .get(i).show();
}
}

@Override
public void responsibility() {
for ( int i = 0 ; i < mCompany .size(); i++) {
mCompany .get(i).responsibility();
}

}
}

HR部门
/**
* Created by shixin-pc on 2018/4/21.
* HR部门
*/

public class HRDepartment extends Company{
public HRDepartment(String name) {
super (name);
}

@Override
public void add(Company c) {

}

@Override
public void remote(Company c) {

}

@Override
public void show() {
Log. e ( "tag" , getName());
}

@Override
public void responsibility() {
Log. e ( "tag" , getName()+ "职责是负责所有人事工作" );
}
}

员工部门
/**
* Created by shixin-pc on 2018/4/21.
* 所有员工部门
*/

public class StaffDepartment extends Company{
public StaffDepartment(String name) {
super (name);
}
@Override
public void show() {
Log. e ( "tag" ,getName());
}

@Override
public void responsibility() {
Log. e ( "tag" ,getName()+ "职责是所有公司任务" );
}


@Override
public void add(Company c) {

}

@Override
public void remote(Company c) {

}
}

调用
/**
* 组合模式
* */
private void composite(){
Company company= new ConcreteCompany( "成都纽糖总公司" );
company.add( new HRDepartment( "总公司人事部门" ));
company.add( new StaffDepartment( "总公司员工部门" ));

Company company1= new ConcreteCompany( "华北纽糖分公司" );
company1.add( new HRDepartment( "华北纽糖分公司人事部门" ));
company1.add( new StaffDepartment( "华北纽糖分公司员工部门" ));
company.add(company1);

Company company2= new ConcreteCompany( "华南纽糖科技" );
company2.add( new HRDepartment( "华南纽糖科技人事部门" ));
company2.add( new StaffDepartment( "华南纽糖科技员工部门" ));
company.add(company2);

Company company3= new ConcreteCompany( "西北纽糖科技" );
company3.add( new HRDepartment( "西北纽糖科技人事部门" ));
company3.add( new StaffDepartment( "西北纽糖科技员工部门" ));
company.add(company3);

company.show();
company.responsibility();

}
























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值