11.组合模式

组合模式主要应对的是当一个具体实现一个接口的类中,含有更多的该接口的实例的树形接口,当执行此接口的方法时怎样赋予其中的相同接口的方法实现java

1.接口this

public interface IBox {
	public void process();
}

2.实现接口的类blog

1)单一的类递归

public class SingleBox implements  IBox {

	public void process() {
		// TODO Auto-generated method stub
		System.out.println("single box process");
	}

}

2.具备树形实现接口的类接口

public class ContainerBox implements IBox {
	List<IBox> list=new ArrayList<IBox>();
	public ContainerBox(List<IBox> list){
		this.list=list;
	}
	public void process() {
		// TODO Auto-generated method stub
		System.out.println("containerBox process");
         //组合模式的关键,递归调用 if (null!=list && list.size()>0) { for(IBox item : list){ item.process(); } } } }

3.应用get

public class App {
	public static void main(String[] args) {
		SingleBox box=new SingleBox();
		List<IBox> list=new ArrayList<IBox>();
		list.add(box);
		ContainerBox containerBox=new ContainerBox(list);
		//IBox box=Factory.getBox();	
		
		// 对客户程序来讲,不需判断有无树形结构
		containerBox.process();
	}
}
相关文章
相关标签/搜索