組合模式主要應對的是當一個具體實現一個介面的類中,含有更多的該介面的實例的樹形介面,當執行此介面的方法時怎樣賦予其中的相同介面的方法實現 1.介面 2.實現介面的類 1)單一的類 2.具有樹形實現介面的類 3.應用 ...
組合模式主要應對的是當一個具體實現一個介面的類中,含有更多的該介面的實例的樹形介面,當執行此介面的方法時怎樣賦予其中的相同介面的方法實現
1.介面
public interface IBox { public void process(); }
2.實現介面的類
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.應用
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(); } }