設計模式 組合模式

2021-09-30 01:33:57 字數 1751 閱讀 1566

結構型軟體設計的主要目的是將不同類和物件組合在一起,形成更加或者更複雜的結構體。例如,形成複雜的使用者介面或者複雜的賬目資料介面。值得注意的是該模式不是簡單的將這些類擺在一起,而是提供這些類之間的連線方式。

組合模式講乙個或多個相似的物件構成組合物件,各個物件有相似的功能。該模式以相同的方式對待單獨的物件與一組物件,即組合物件。例如,等同地對待的葉子結點與樹枝結點。

組合模式(composite pattern),又叫部分整體模式,是用於把一組相似的物件當作乙個單一的物件。組合模式依據樹形結構來組合物件,用來表示部分以及整體層次。這種型別的設計模式屬於結構型模式,它建立了物件組的樹形結構。

component:為組合模式中的物件宣告介面,在適當的情況下,實現所有類共同介面的預設行為;宣告乙個介面用於訪問和管理其元件;在遞迴結構中定義乙個介面,用於訪問乙個父元件,並在合適的情況下實現。

leaf:在組合模式中表示葉結點物件,葉結點物件沒有子結點,實現component的所有方法。

composite:表示組合部件(注意部件帶有子部件),實現操縱子部件的方法;實現所有在component 的操作。

client:通過component介面操縱組合部件的物件。

各組成部分的協作過程是,使用者使用component 類介面與組合結構中的物件進行互動。如果接受者是乙個leaf,則直接處理請求;如果接受者是composite,則通常將請求**給子部件,在請求**之前或者之後可能執行一些輔助操作。

1. 分類

2. 再次理解組合模式

組合模式允許你將物件組合成樹形結構來表現」部分-整體「的層次結構,使得客戶以一致的方式處理單個物件以及物件的組合。

組合模式實現的最關鍵的地方是——簡單物件和復合物件必須實現相同的介面。這就是組合模式能夠將組合物件和簡單物件進行一致處理的原因。

3. 優點

定義了包含基本物件和組合物件的類層次結構,基本物件可以被組合成更複雜的組合物件,而這個組合物件又可以被組合。

簡化了客戶**。客戶可以一致地組合結構和單個物件,通常使用者不知道處理的是乙個葉結點還是乙個組合部件。

使得更容易增加新型別的元件。新定義的composite 或leaf 子類自動與已有的結構和客戶**一起工作,客戶程式不需要因為新的composite 而改變。

使設計變得更通用。

例:空軍指揮系統設計與實現的例項。

在本例中,考慮空軍的各種型別的飛機組隊飛行以便執行任務。本例考慮的空軍力量(airforce)包括戰鬥機(fighter)、轟炸機(bomber)、運輸機(transport)與電子資訊偵查機(eplane)。戰鬥分隊分為空軍中對(squadron),空軍團(group)和空軍(wing)。各個戰鬥單位可以由不同的機種組成,例如乙個空軍中隊由24 架飛機組成,其中包括18架戰鬥機,2架轟炸機,2架運輸機,2架電子資訊偵查機。但有時候可以臨時組織戰鬥單位,以便執行特殊任務。

1. 類設計圖

**連線:【例3.3】-組合模式-空軍組合系統

用我三生煙火,換你一世迷離

組合模式 設計模式 組合模式

1.需求分析 假設要給乙個大公司做辦公管理系統,公司有人力資源部 財務部等,然後公司在其他城市還有分公司,分公司也有自己的人力資源部 財務部等,要求總公司 分公司以及各部分成樹狀結構管理。要完成這麼乙個系統,為了有乙個更好的設計,方便開發的展開,就需要了解乙個設計模式 組合模式。2.定義 將物件組合...

設計模式 組合模式 組合模式使用

目錄 組合模式概括 組合模式使用場景 定義 將物件組合成樹形結構以表示 部分 整體 的層次結構 作用 使客戶端對單個物件和組合物件保持一致的處理方式 使用場景 1.希望客戶端可以忽略組合物件與單個物件的差異時 2.處理乙個樹形結構時 優點 清楚的定義分層次的複雜物件,表示物件的全部或部分層次 讓客戶...

設計模式 組合設計模式

組合模式 composite pattern 又稱部分整體模式,用於把一組相似的物件當做乙個單一的物件,組合模式依據樹形來組合物件,用來表示部分以及整體層次,為結構型設計模式,它建立來物件組的樹形結構。意圖 將物件組合成樹形結構以表示 部分 整體 的結構層次,組合模式使得使用者對單個物件和組合物件的...