composite,將物件組合成樹形結構以表示『部分
-整體』的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性。
component為組合中的物件宣告介面,在適當情況下,實現所有類共有介面的預設行為。宣告乙個介面用於訪問和管理
component
的子部件。
abstract class component
//通常都用add和remove方法提供增加或移除樹葉或樹枝的功能
public abstract void add(component c);
public abstract void remove(component c);
public abstract void display(int depth);
}
leaf在組合中表示葉節點物件,葉節點沒有子節點。
class leaf:component
//由於葉子沒有在增加分枝和樹葉,所以add和remove方法實現沒有意義,但這樣做可以消除葉節點和枝節點在抽象層次的區別,它們具備完全一致的介面
public override void add(component c)
public override void remove(component c)
public override void display(int depth)
}
composite定義有枝節點行為,用來儲存部件,在
component
介面中實現與子部件有關的操作,比如增加add
和刪除r
在c
omponent
中宣告所有用來管理子物件的方法(如add
,remove
),這樣實現
component
介面的所有子類都具備了這種方法(如add
,remove
),這種方式叫做透明方式。
葉節點和枝節點對於外界沒有區別,它們具備完全一致的行為介面。
leaf
類本身不具備這些方法(如add
,remove
)的功能,所以實現它沒有意義。在c
omponent
介面中不去宣告這些方法(如add
,remove
),那麼子類的
leaf
也就不需要去實現它,而是在
composite
宣告所有用來管理子類物件的方法,這種方式就是安全方式。
leaf
類不用去實現這些方法(如add
,remove
)。由於不透明,所以樹葉和樹枝類不具有相同的介面,客戶端的呼叫需要做相應的判斷,帶來了不便。
1.需求中是體現部分與整體層次的結構時
2.希望使用者可以忽略組合物件與單個物件的不同,統一地使用組合結構中的所有物件時
1. 組合模式可以很容易的增加新的構件。2.使用組合模式可以使客戶端變的很容易設計,因為客戶端可以對組合和葉節點一視同仁。
3.組合模式讓客戶可以一致地使用組合結構和單個物件。
1.使用組合模式後,控制樹枝構件的型別不太容易。2. 用繼承的方法來增加新的行為很困難。
組合模式 設計模式 組合模式
1.需求分析 假設要給乙個大公司做辦公管理系統,公司有人力資源部 財務部等,然後公司在其他城市還有分公司,分公司也有自己的人力資源部 財務部等,要求總公司 分公司以及各部分成樹狀結構管理。要完成這麼乙個系統,為了有乙個更好的設計,方便開發的展開,就需要了解乙個設計模式 組合模式。2.定義 將物件組合...
設計模式 組合模式 組合模式使用
目錄 組合模式概括 組合模式使用場景 定義 將物件組合成樹形結構以表示 部分 整體 的層次結構 作用 使客戶端對單個物件和組合物件保持一致的處理方式 使用場景 1.希望客戶端可以忽略組合物件與單個物件的差異時 2.處理乙個樹形結構時 優點 清楚的定義分層次的複雜物件,表示物件的全部或部分層次 讓客戶...
設計模式 組合設計模式
組合模式 composite pattern 又稱部分整體模式,用於把一組相似的物件當做乙個單一的物件,組合模式依據樹形來組合物件,用來表示部分以及整體層次,為結構型設計模式,它建立來物件組的樹形結構。意圖 將物件組合成樹形結構以表示 部分 整體 的結構層次,組合模式使得使用者對單個物件和組合物件的...