设计模式之组合模式-Composite

组合模式:将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性

案例分析:

一个公司有分公司也有部门,分公司下面也有公司和部门。

public abstract class GongSi {
	protected String name;
	public GongSi(String name)
	{
		this.name=name;
	}
	public void ShowName()
	{
		System.out.println(name);
	}
	public abstract void add(GongSi gongSi);
	public abstract void remove(GongSi gongSi);
	public abstract void iterate();
}

public class BuMen extends  GongSi{	
	public BuMen(String name) {
		super(name);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void add(GongSi gongSi) {
		// TODO Auto-generated method stub
	}

	@Override
	public void remove(GongSi gongSi) {
		// TODO Auto-generated method stub
	}

	@Override
	public void iterate() {
		// TODO Auto-generated method stub
		System.out.println(name);
	}

}

public class FenGongSi extends GongSi{

	private ArrayList<GongSi> list=new ArrayList<GongSi>();
	public FenGongSi(String name) {
		super(name);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void add(GongSi zongGongSi) {
		// TODO Auto-generated method stub
		list.add(zongGongSi);
	}
	@Override
	public void remove(GongSi gongSi) {
		// TODO Auto-generated method stub
		list.remove(gongSi);
	}

	@Override
	public void iterate() {
		// TODO Auto-generated method stub
		System.out.println(name);
		  for (GongSi c : list) {  
             c.iterate();
          }  
	}
}

public static void main(String[] args) {
		FenGongSi fenGongSi=new FenGongSi("总公司");
		fenGongSi.add(new BuMen("总公司下部门1"));
		fenGongSi.add(new BuMen("总公司下部门2"));
		FenGongSi fengongsi1=new FenGongSi("总公司下分公司1");
		fenGongSi.add(fengongsi1);
		FenGongSi fengongsi2=new FenGongSi("总公司下分公司2");
		fenGongSi.add(fengongsi2);
		
		FenGongSi fengongsi11=new FenGongSi("总公司下分公司1分部门1");
		fengongsi1.add(fengongsi11);
		FenGongSi fengongsi12=new FenGongSi("总公司下分公司1分部门2");
		fengongsi1.add(fengongsi12);
		
		FenGongSi fengongsi21=new FenGongSi("总公司下分公司2分部门1");
		fengongsi2.add(fengongsi21);
		FenGongSi fengongsi22=new FenGongSi("总公司下分公司2分部门2");
		fengongsi2.add(fengongsi22);
		fenGongSi.iterate();
	}

运行结果:

总公司
总公司下部门1
总公司下部门2
总公司下分公司1
总公司下分公司1分部门1
总公司下分公司1分部门2
总公司下分公司2
总公司下分公司2分部门1
总公司下分公司2分部门2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值