GoLang設計模式20 組合模式

2022-09-19 11:45:12 字數 1302 閱讀 9125

組合模式是一種結構型設計模式。

當我們想把一組物件當做乙個整體來處理時就可以考慮使用組合模式。

組合模式被視為是介面型設計模式是因為它將一組物件組裝為乙個樹狀結構。這個樹狀結構中的每個獨立元件都可以用同樣的方式來處理——無論它們是複雜的還是原始的。

以計算機作業系統中的檔案系統為例。在檔案系統中有檔案(file)和資料夾(folder)兩類物件,在常見的各種使用場景中,它們的處理方式都差不多是一樣的。接下來我們會依據檔案系統對組合模式做更詳細的闡釋。

一、當從呼叫方的角度看來,組裝體和獨立元件需要以同樣的方式來處理時可以使用組合模式

在檔案系統中這個例子中,假設我們需要通過關鍵字來搜尋檔案。這個搜尋操作通常會對檔案和資料夾同時進行:

二、當組裝體和獨立元件可以組成乙個樹狀結構時可以使用組合模式

檔案系統中的資料夾和檔案顯然是可以組成樹狀結構的。

類圖如下:

介紹下類圖中的各個組成部分:

檔案系統對應的uml類圖如下:

設計模式之美20 組合模式

組合模式用的很少 組合模式跟我們之前講的物件導向設計中的 組合關係 通過組合來組裝兩個類 完全是兩碼事。這裡講的 組合模式 主要是用來處理樹形結構資料。這裡的 資料 將一組物件組織 compose 成樹形結構,以表示一種 部分 整體 的層次結構。組合讓客戶端 在很多設計模式書籍 中,客戶端 代指 的...

設計模式 15 組合設計模式

目錄 什麼是組合模式 為什麼要用組合模式 組合模式組成 由每乙個單元節點,組合成乙個整體節點,這種對單個節點的結構儲存和對整體節點的儲存和處理邏輯保持一致的設計模式便是組合設計模式。應用中有很多場景會用到組合模式,例如樹狀儲存的結構,比如多級選單,每一層級選單的處理都可以抽象保持一致。比如企業的組織...

設計模式8 組合模式

組合模式首先想到的就是樹形結構,比如我們常用的檔案結構,請看windows的檔案結構 無論是檔案或者是資料夾,常用操作都是一致的,比如 複製 貼上 剪下 刪除 所佔空間大小。我們並沒有刻意的去分他是資料夾還是檔案。我們可以把資料夾看成是組合物件,把每乙個檔案看成是單個物件。組合模式模糊了這兩個概念,...