《設計模式之禪》之組合模式

2022-02-02 13:22:38 字數 806 閱讀 6666

組合模式也叫合成模式,有時又叫做部分-整體模式,主要用來描述部分與整體的關係,其定義如下:

將物件組合成的樹形結構以表示」部分-整體」的層次結構,使得使用者對單個物件和組合物件的使用具有一致性。

(1)component抽象構件角色

定義參加組合物件的共有方法和屬性,可以定義一些預設的行為或屬性

(2)leaf葉子構件

葉子物件,其下再也沒有其他的分支,也就是遍歷的最小單位。

(3)composite樹枝構件

樹枝物件,它的作用是組合樹枝節點和葉子節點形成乙個樹形結構。

(1)高層模組呼叫簡單

一棵樹形機構中的所有節點都是component,區域性和整體對呼叫者來說沒有區別,也就是說,高層模組不必關心自己處理的是單個物件還是整個組合結構,簡化了高層模組的**。

(2)節點自由增加

使用了組合模式後,我們可以看看,如果想增加乙個樹枝節點是不是都很容易,只要找到它的父節點就成,非常容易擴充套件,符合開閉原則,對以後的維護非常有利。

組合模式又乙個非常明顯的缺點,直接使用實現類,這在面向介面程式設計上是很不恰當的,與依賴倒置原則衝突,使用時要考慮清楚,它限制了介面的影響範圍。

(1)只要是樹形結構,就要考慮使用組合模式;

(2)只要是體現區域性和整體的關係,而且關係還比較深,考慮一下組合模式;

什麼是真實的組合模式?

就是你在實際專案中使用的組合模式,而不是僅僅依照書本上學習到的模式,它是」實踐出真知」。

組合模式有兩種不同的實現:透明模式和安全模式。

組合模式在專案中到處都有。

比如:**例子:

設計之禪 組合模式

回到問題的本質,為什麼新增甜品後迭代器就無法工作了?因為昨天是針對菜品實現的迭代器,而甜品是乙個子選單,並不支援菜品的某些操作 獲取 也就是它們的操作不一致導致迭代器需要作出更多複雜的判斷才能完成昨天同樣的功能。那為什麼組合模式就可以解決這個問題呢?先來看看它的定義 組合模式允許你將物件組合成樹形結...

《設計模式之禪》 組合模式 1

這是乙個常見的資料庫結構 比較典型的樹狀結構 常見的還有選單 一般的做法 ceo我們認為是根節點 developdep,developgroup,salesdep,fiancedep是樹枝節點 k,a,b則是樹葉節點 樹葉節點是最小的節點.不能延伸或者有分支 一般的做法是定義三個介面用來定義三個角色...

設計模式之禪之設計模式 門面模式

1 package com.yeepay.sxf.template18 2 3 寫信的業務類 4 隱藏在門面角色裡邊,不需要暴露太多5 author sxf6 7 8public inte ce iletterprocess view code 寫信的業務類的實現 1 package com.yee...