橋接模式

場景分析

商城系統(tǒng)中常見的商品分類,以電腦為例,如何良好的處理商品分類銷售的問題?

這個場景有兩個維度:電腦類型、電腦品牌。


模式定義:

將抽獎部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化。

模式結(jié)構(gòu)

模式結(jié)構(gòu)

代碼實現(xiàn)

public interface Brand {
    void sale();
}

public class Dell implements Brand {
    public void sale() {
        System.out.print("賣戴爾牌");
    }
}

public class Lenovo implements Brand {
    public void sale() {
        System.out.print("賣聯(lián)想牌");
    }
}

public abstract class Computer {
    public abstract void sale();
}

@AllArgsConstructor
public class Laptop extends Computer {
    private Brand brand;

    @Override
    public void sale() {
        brand.sale();
        System.out.println("筆記本");
    }
}

@AllArgsConstructor
public class DesktopComputer extends Computer {
    private Brand brand;
    @Override
    public void sale() {
        brand.sale();
        System.out.println("臺式機");
    }
}

public class Client {
    public static void main(String[] args) {
        Brand brand = new Dell();
        Computer computer = new DesktopComputer(brand);
        computer.sale();
    }
}

模式的優(yōu)缺點

模式的優(yōu)點

  1. 分離抽象接口及其實現(xiàn)部分。

  2. 橋接模式有時類似于多繼承方案,但是多繼承方案違背了類的單一職責(zé)原則(即一個類只有一個變化的原因),復(fù)用性比較差,而且多繼承結(jié)構(gòu)中類的個數(shù)非常龐大,橋接模式是比多繼承方案更好的解決方法。

  3. 橋接模式提高了系統(tǒng)的可擴充性,在兩個變化維度中任意擴展一個維度,都不需要修改原有系統(tǒng)。

  4. 實現(xiàn)細節(jié)對客戶透明,可以對用戶隱藏實現(xiàn)細節(jié)。

模式的缺點

  1. 橋接模式的引入會增加系統(tǒng)的理解與設(shè)計難度,由于聚合關(guān)聯(lián)關(guān)系建立在抽象層,要求開發(fā)者針對抽象進行設(shè)計與編程。

  2. 橋接模式要求正確識別出系統(tǒng)中兩個獨立變化的維度,因此其使用范圍具有一定的局限性。

思考

模式本質(zhì):分離抽象和實現(xiàn)。

處理多層繼承結(jié)果,處理多維度變化的場景,將各個維度設(shè)計成獨立的繼承結(jié)構(gòu),使得各個維度可以獨立的擴展在抽象層建立的關(guān)系。

開發(fā)中的應(yīng)用場景

  1. 如果不希望在抽象部分和實現(xiàn)部分采用固定的綁定關(guān)系,可以采用橋接模式,可以把抽象部分和實現(xiàn)部分分開,然后程序運行期間動態(tài)地設(shè)置抽象部分需要用到的具體的實現(xiàn)。

  2. 如果出現(xiàn)抽象部分和實現(xiàn)部分都能夠擴展的情況,可以采用橋接模式,讓抽象部分和實現(xiàn)部分獨立的變化,從而靈活的進行單獨擴展。

  3. 如果希望實現(xiàn)部分的修改不會對客戶端產(chǎn)生影響,可以采用橋接模式。

  4. 如果采用繼承的實現(xiàn)方案,會導(dǎo)致產(chǎn)生很多子類,對于這種情況,可以考慮采用橋接模式。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 場景問題# 1.1 發(fā)送提示消息## 考慮這樣一個實際的業(yè)務(wù)功能:發(fā)送提示消息。基本上所有帶業(yè)務(wù)流程處理的系統(tǒng)...
    七寸知架構(gòu)閱讀 5,217評論 5 63
  • 在正式介紹橋接模式之前,我先跟大家談?wù)剝煞N常見文具的區(qū)別,它們是毛筆和蠟筆。假如我們需要大中小3種型號的畫筆,能夠...
    justCode_閱讀 1,858評論 0 7
  • 本文參考:http://www.oschina.net/question/1436074_140456 http:...
    端木軒閱讀 3,659評論 0 5
  • 在項目開發(fā)中,我們經(jīng)常會遇到這樣的場景:某些類型由于自身的邏輯,往往具有兩個或多個維度的變化,比如手機,它有兩個變...
    LeeLeCoder閱讀 739評論 0 0
  • 介紹 橋接模式(Bridge Pattern) 也稱為橋梁模式,是結(jié)構(gòu)型設(shè)計模式之一。橋接模式的作用就是連接 "兩...
    任教主來也閱讀 385評論 0 1

友情鏈接更多精彩內(nèi)容