Bridge模式 設計模式學習筆記

2022-03-24 09:22:19 字數 1957 閱讀 8575

bridge模式

一 意圖

將抽象部分與它的實現部分分離,使它們都可以獨立的變化。

(類設計的開閉原則:對擴充套件開放,對修改關閉)

二 動機

1 如需增加新的型別window就必須要重新增加新的window類,

且仍然要區分對應平台的window型別,如果要是新增加乙個平台,那整個結構都需要重新新增新的window型別。

2 繼承機制使得客戶**與平台相關。xwindow物件的實現方式僅支援在xwindow平台上執行,包括其所擴充套件的物件,

都只能在xwindow平台上執行,如果要在pmwindow上實現,**不能共享,需要重新移植。

3 依賴性太強,沒有將僅對平台依賴的部分獨立開來,而是不斷的擴充套件不斷的依賴平台。

提供相關的抽象介面和具體平台相關的實現類。

將邏輯介面抽象為window,將具體平台實現抽象為windowimp。

將複雜的類繼承依賴關係結構轉變為組合結構的依賴關係。

三 適用性和結構

1 使抽象和實現部分之間沒有固定的的繫結關係

2 類的抽象和實現都通過它的子類來完成和加以擴充。使得不同的抽象和實現進行任意組合。

3 隱藏實現部分;對抽象部分或者實現部分修改不影響其他部分。

結構

abstraction定義抽象類的介面,維護乙個指向implementor型別的物件指標。

implementor定義實現類的介面,並不一定要與abstraction介面一致,

僅僅是實現類所必需的介面。abstraction提供的是高層次的介面。

將介面和實現分離,解決這種依賴性關係所帶來的系統擴充套件,**復用,系統層次結構問題。

四 **實現

以動機中window為例

1 impementor

2 implementor creator

3  abstrction和refinedabstraction

4 test

5 result

五 例項分析

動態列表資料載入形式:動態列表會包含不確定的大量的資料;

獲取資料的方式形式多樣並不能保持總是同步方式,還需要實時的更新;資料的儲存位置等。

1 簡單基本形式

listmenu提高一系列設定listmenu資料屬性的介面,由客戶端自行去設定而不由系統來維護。

這種實際上就是一種同步的形式,只有資料ready然後將資料傳遞給listmenu。

2 使用bridge模式

這是工作平台上實現方式,是所有使用到列表的地方都要listmenucontentprovider繼承下來類,

既作為客戶端也作為具體對映實現。雖然具有統一性,但是感覺怪怪的。

3 使用bridge模式

將client和concreteimplementor分離開來。

設計模式 Bridge模式

原來對bridge模式理解不是很深入,感覺和build模式很相似,今天又看了四人幫的關於bridge模式的描述,有些新的理解 先來說下適用性 1 不想抽象和實現之間有乙個固定的繫結關係。因為程式在執行時實現部分可以被選擇或者切換 2 類的抽象以及它的實現都應該可以通過生成子類的方法加以擴充。這時br...

設計模式之Bridge模式

本文內容是通過學習 設計模式解析 by alan shalloway,james r.trott 一書所總結的心得。博主想通過先提出問題,再解決問題的方式來讓讀者實際體驗一把bridge模式的優勢。這也是 設計模式解析 一書中採用的講解流程,對於讀者理解會有很大幫助 文中的案例也是使用的書中提供的案...

設計模式學習 Bridge 橋接

意圖 將抽象部分和它的實現部分分離,使得它們都可以獨立的變化 適用性 不希望抽象和實現部分有乙個固定的繫結關係 類的抽象以及它的實現可以通過生成子類的方法加以擴充 對乙個抽象的實現部分的修改應對客戶不產生影響 你對客戶晚產隱藏抽象的實現部分 示例圖 示例 瓶子裝液體,搖晃瓶子,液體跟著蕩漾 填充液體...