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();
	}
}
相關文章
相關標籤/搜索