《設計模式之禪》之橋梁模式

2022-02-02 12:57:08 字數 903 閱讀 5612

橋梁模式也叫橋接模式,是乙個比較簡單的模式,其定義如下:

將抽象和實現解耦,使得兩者可以獨立地變化。

abstraction–抽象化角色

它的主頁職責是定義出該角色的行為,同時儲存乙個對實現畫角色的引用,該角色一般是抽象類。

implementor–實現化角色

它是介面或者抽象類,定義角色必需的行為和屬性。

refindabstraction–修正抽象化角色

它引用實現化角色對抽象化角色進行修正。

concreteimplementor–具體實現化角色

它實現介面或抽象類定義的方法和屬性。

橋梁模式中的幾個名詞比較拗口,大家記住一句話:抽象角色引用實現角色,或者說抽象角色的部分由實現角色完成的

a.抽象和實現分離

b.優秀的擴充能力

c.實現細節對客戶透明

a.不希望或不適用於繼承的場景

例如繼承層次過渡、無法更細化設計顆粒等場景,需要考慮使用橋梁模式。

b.介面或抽象類不穩定的場景

明知道介面不穩定還想通過實行或繼承來實現業務需求,那是得不償失,也是比較失敗的做法。

c.重用性要求較高的場景

設計的顆粒度越細,則被重用的可能性就越大,而採用繼承則受父類的限制,不可能出現太細的顆粒度。

橋梁模式非常簡單,使用該模式時主要考慮如何拆分抽象和實現,並不是一涉及繼承就要考慮使用該模式。橋梁模式的意圖還是對變化的封裝,盡量把可能變化的因素封裝到最細、最小的邏輯單元中,避免風險擴散。

繼承的優點有很大,可以把公共的方法或屬性抽取,父類封裝共性,子類實現特性,這是繼承的基本功能。但是缺點比較明顯就是強侵入性,父類有這個方法,子類也必須有,會帶來擴充套件性問題,而橋梁模式就是這一問題的解決辦法之一。

**例子:

設計模式之禪之設計模式 橋梁模式

1 package com.yeepay.sxf.template24 2 3 實現化角色 4 相當於不同的業務邏輯,抽象出共有行為5 6 產品類7 author sxf8 9 10 public abstract class product view code 房子產品實現 1 package c...

設計模式之橋梁模式

其實大家都是朋友,也不能人人都像小明那麼勢利吧。小剛就做的比較好,一打眼就知道誰是窮人誰又是富人了。不過沒關係窮人有窮人的玩法富人有富人的玩法嘛 這段邏輯用 怎麼實現?首先是乙個抽象的朋友 朋友在這裡充當了實現者角色 public abstract class friend 下來朋友裡有富有的有貧窮...

設計模式之橋梁模式

場景描述 1 在系統設計時,發現類的繼承有n層時,但不能確定是否會更改繼承來的共性,可以考慮使用橋梁模式。2 類圖描述 橋梁模式是抽象和實現的解耦,使得兩者可以獨立地變化。3 程式實現舉例 c using system using system.collections.generic using s...