GoF結構模型 橋模式

2021-09-25 14:10:45 字數 2124 閱讀 2164

單一職責模式:在軟體元件設計中,如果責任劃分的不清晰,使用繼承得到的

結果往往隨著需求的變化, 子類急劇膨脹,同時充斥著重複**,這時候關鍵是劃分責任

意圖

使抽象層與實現層分離,以便兩者可以只有變化
應用場景:

1. 解耦合抽象和實現

2. 抽象和實現需要分別只有擴充套件

影響:增加了類的數量

參與者:

其中abstraction和implementor兩個維度的變化 ,使用組合的方式新增在一起(不使用繼承),

說的比較抽象,下面舉例:

例:

1. 目前有兩個平台:pc版本、mobile版本 (以後還可能增加平台)

2.目前每乙個平台兩個風格:perfect風格、lite風格 (以後還可能增加新的風格)

其中abstraction類

class messager

;

implementor類:

class messageimplement

;

其中implementor 可以在 pc 和 mobile 兩個平台

class pcmessageimplement : public messageimplement 

; virtual void

drawshape()

; virtual void

writetext()

; virtual void

connect()

;};class mobilemessageimplement : public messageimp

; virtual void

drawshape()

; virtual void

writetext()

; virtual void

connect();};

messager有兩種風格

class messagelite :public messager 

virtual void

login

(string username, string password =0)

; virtual void

sendmessage

(string message)

; virtual void

sendpicture

(image image);}

;class messageperfect :public messager

virtual void

login

(string username, string password =0)

; virtual void

sendmessage

(string message)

; virtual void

sendpicture

(image image);}

;

總結:bridge模式使用「物件間的組合關係」解耦了抽象和實現之間固有的繫結關係,使得抽象和實現

可以沿著各自的維度來變化。所謂抽象和實現沿著各自維度的變化,即「子類化」它們

bridge模式有時候類似於多繼承方案,但是多繼承方案往往違背「單一職責」原則(即乙個類只有

乙個變化的原因),復用性比較差。bridge模式是比多繼承更好的解決方法。

bridge模式的應用一般在「兩個非常強的變化維度」,有時乙個類也有多於兩個變化維度,這時可

以使用bridge的拓展模式

GoF之橋接模式(Bridge)

將抽象與實現分離,使二者可以獨立變地變化 另一種解釋 只依賴介面不依賴實現,定義乙個介面類,然後實現的部分在子類中完成,適用於兩個群組獨立變化的情況 橋接模式來解決 當兩個群組因為功能上的需求,想要連線合作 關係呈現交叉引用的情況 但又希望兩組類可以各自發展不受彼此 的影響時候。可以考慮使用橋接模式...

GOF 23設計模式之 橋接模式

違反單一職責原則 將這個場景分成兩個維度 橋接模式可以取代多層繼承的方案。多層繼承違背了單一職責原則,復用性較差,類的個數也非常多。橋接模式可以極大的減少子類的個數,從而降低管理和維護的成本。橋接模式極大的提高了系統的可擴充套件性,在兩個變化維度中任意擴充套件乙個維度,都不需要修改原有的系統,符合開...

GOF23 設計模式 之橋接模式

橋接模式的話 主要是為了 處理多維度的情況 類膨脹 繼承的問題 維度過於多的情況 就會使得情況變得很複雜,橋接模式利用 物件新增屬性的方式來解決這一問題 電腦主類 package brige public class computer public void sale class computerd...