十四、組合模式
阿新 • • 發佈:2017-09-30
ech 是把 new 代碼 say arr 類對象 static osi
組合模式,顧名思義就是把多個功能相似的對象組合在一起就像是一個對象的功能一樣,代碼如下:
package test; import java.util.ArrayList; import java.util.List; /* * 組合對象模式 */ public class CompositeDemo { public static void main(String[] args) { CompositeParent compositeParent = new CompositeChild1("compositeParent"); CompositeParent child1= new CompositeChild1("child1"); CompositeParent child2 = new CompositeChild1("child2"); CompositeParent child3 = new CompositeChild1("child3"); compositeParent.add(child1); compositeParent.add(child2); compositeParent.add(child3); for(CompositeParent row : compositeParent.rows) { row.say(); } } } abstract class CompositeParent{ public List<CompositeParent> rows = new ArrayList<>(); public String name; public void say(){}; public void add(CompositeParent compositeParent){}; }class CompositeChild1 extends CompositeParent{ public CompositeChild1(String name) { this.name = name; } @Override public void say() { System.out.println(name + " say that... "); } @Override public void add(CompositeParent compositeParent) { super.rows.add(compositeParent); } }
以上, 我們看到多個child的功能被一個composite的對象組合到了一個list中,調用采用了叠代的方式。組合的方式其實可以又很多變化,不一定要按照這種方式,關鍵是了解多個類對象的功能轉換成一個類對象的理念
十四、組合模式