国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

設(shè)計(jì)模式—結(jié)構(gòu)型模式之橋接模式

這篇具有很好參考價(jià)值的文章主要介紹了設(shè)計(jì)模式—結(jié)構(gòu)型模式之橋接模式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

設(shè)計(jì)模式—結(jié)構(gòu)型模式之橋接模式

將抽象與實(shí)現(xiàn)解耦,使兩者都可以獨(dú)立變化。

在現(xiàn)實(shí)生活中,某些類具有兩個(gè)或多個(gè)維度的變化,如圖形既可按形狀分,又可按顏色分。如何設(shè)計(jì)類似于 Photoshop 這樣的軟件,能畫不同形狀和不同顏色的圖形呢?如果用繼承方式,m 種形狀和 n 種顏色的圖形就有 m×n 種,不但對(duì)應(yīng)的子類很多,而且擴(kuò)展困難。不同顏色和字體的文字、不同品牌和功率的汽車。

橋接將繼承轉(zhuǎn)為關(guān)聯(lián),降低類之間的耦合度,減少代碼量。

橋接(Bridge)模式包含以下主要角色:

  • 系統(tǒng)設(shè)計(jì)期間,如果這個(gè)類里面的一些東西,會(huì)擴(kuò)展很多,這個(gè)東西就應(yīng)該分離出來
  • 抽象化(Abstraction)角色:定義抽象類,并包含一個(gè)對(duì)實(shí)現(xiàn)化對(duì)象的引用。
  • 擴(kuò)展抽象化(Refined Abstraction)角色:是抽象化角色的子類,實(shí)現(xiàn)父類中的業(yè)務(wù)方法,并通過組合關(guān)系調(diào)用實(shí)現(xiàn)化角色中的業(yè)務(wù)方法。
  • 實(shí)現(xiàn)化(Implementor)角色:定義實(shí)現(xiàn)化角色的接口,供擴(kuò)展抽象化角色調(diào)用。
  • 具體實(shí)現(xiàn)化(Concrete Implementor)角色:給出實(shí)現(xiàn)化角色接口的具體實(shí)現(xiàn)。

舉例

如果我們有不同型號(hào)的手機(jī),每種型號(hào)的手機(jī)都有線下和線上兩種銷售渠道,兩種渠道的價(jià)格還不同。如果我們不使用設(shè)計(jì)模式,我們就需要定義線上渠道的不同型號(hào)手機(jī)類、線下渠道的不同型號(hào)手機(jī)類;如果我們?cè)僭黾右粋€(gè)渠道,又需要增加新的不同型號(hào)渠道手機(jī)類。我們能否把渠道分離出來呢?這便引出了橋接模式。

渠道抽象類:

/**
* 抽象渠道類
*/
public abstract class AbstarctChnnel {
    private String channel;
    private Integer price;

    public AbstarctChnnel(String channel, Integer price) {
        this.channel = channel;
        this.price = price;
    }

    String getChannelInfo(){
        return "渠道:"+this.channel + "\t價(jià)格:"+this.price;
    }
}

線上渠道和線下渠道分別為:

/**
 * 線上渠道
 */
public class OnlineChannel extends AbstarctChnnel{
    public OnlineChannel(String channel, Integer price) {
        super(channel, price);
    }
}
/**
 * 線下渠道
 */
public class OfflineChannel extends AbstarctChnnel{
    public OfflineChannel(String channel, Integer price) {
        super(channel, price);
    }
}

我們的抽象手機(jī)類如下:

public abstract class AbstarctPhone {
    //橋接在此.....設(shè)計(jì)期間就得想好
    //【真正會(huì)引起此類變化的一個(gè)維度直接抽取出來,通過組合的方式接起來】
    //橋接+適配器 ...
    AbstarctChnnel chnnel;

    abstract String getPhone();

    public void setChnnel(AbstarctChnnel chnnel) {
        this.chnnel = chnnel;
    }
}

手機(jī)類如下:

public class BananaPhone extends AbstarctPhone{
    @Override
    String getPhone() {
        return "香蕉手機(jī):"+this.chnnel.getChannelInfo();
    }
}

測(cè)試類如下:

public class BridgeTest {
    public static void main(String[] args) {
        BananaPhone phone = new BananaPhone();
        phone.setChnnel(new OfflineChannel("線下渠道",10000));
        System.out.println("phone.getPhone() = " + phone.getPhone());
    }
}

運(yùn)行結(jié)果如下:

如果我們?cè)傩略鲆粋€(gè)渠道,只要再擴(kuò)展出一個(gè)渠道類即可,不需要新增手機(jī)類。

總結(jié)

我們需要把真正會(huì)引起此類變化的維度,直接抽取出來,通過組合的方式拼接起來。文章來源地址http://www.zghlxwxcb.cn/news/detail-745911.html

到了這里,關(guān)于設(shè)計(jì)模式—結(jié)構(gòu)型模式之橋接模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Java 設(shè)計(jì)模式】結(jié)構(gòu)型之橋接模式

    【Java 設(shè)計(jì)模式】結(jié)構(gòu)型之橋接模式

    橋接模式(Bridge Pattern)是一種結(jié)構(gòu)型設(shè)計(jì)模式, 它將抽象部分與實(shí)現(xiàn)部分分離,使它們可以獨(dú)立變化,從而降低它們之間的耦合 。橋接模式通過將抽象部分和實(shí)現(xiàn)部分分離,使得它們可以獨(dú)立地變化,同時(shí)在它們之間建立一個(gè)橋梁。在本文中,我們將介紹 Java 中橋接模式的

    2024年01月19日
    瀏覽(23)
  • c#設(shè)計(jì)模式-結(jié)構(gòu)型模式 之 橋接模式

    c#設(shè)計(jì)模式-結(jié)構(gòu)型模式 之 橋接模式

    ????????橋接模式是一種設(shè)計(jì)模式,它將抽象與實(shí)現(xiàn)分離,使它們可以獨(dú)立變化。這種模式涉及到一個(gè)接口作為橋梁,使實(shí)體類的功能獨(dú)立于接口實(shí)現(xiàn)類。這兩種類型的類可以結(jié)構(gòu)化改變而互不影響。 ????????橋接模式的主要目的是通過將實(shí)現(xiàn)和抽象分離,使兩者可以

    2024年02月12日
    瀏覽(20)
  • 笨蛋學(xué)設(shè)計(jì)模式結(jié)構(gòu)型模式-橋接模式【11】

    7.5.1概念 ? 橋接模式主要將抽象部分與實(shí)現(xiàn)部分分離開來,使得它們可以相互獨(dú)立地變化。抽象部分定義了一個(gè)抽象類或接口,包含一些基本操作以及包含一個(gè)指向?qū)崿F(xiàn)部分的引用。實(shí)現(xiàn)部分也是一個(gè)抽象類或接口,定義了一些具體的操作。 7.5.2場(chǎng)景 ? 比如在路上隨處可見

    2024年01月17日
    瀏覽(29)
  • 《golang設(shè)計(jì)模式》第二部分·結(jié)構(gòu)型模式-02-橋接模式(Bridge)

    《golang設(shè)計(jì)模式》第二部分·結(jié)構(gòu)型模式-02-橋接模式(Bridge)

    橋(Bridge)使用組合關(guān)系將代碼的實(shí)現(xiàn)層和抽象層分離,讓實(shí)現(xiàn)層與抽象層代碼可以分別自由變化。 例如 客戶端調(diào)用橋接接口實(shí)現(xiàn)原有功能和擴(kuò)展功能的組合 Implementor(實(shí)施者): 具體實(shí)施者的抽象,可以是一個(gè)接口。 Concrete Implementor(具體實(shí)施者): 可以理解為擴(kuò)展之前

    2024年02月12日
    瀏覽(22)
  • Java設(shè)計(jì)模式之結(jié)構(gòu)型-橋接模式(UML類圖+案例分析)

    Java設(shè)計(jì)模式之結(jié)構(gòu)型-橋接模式(UML類圖+案例分析)

    目錄 一、基礎(chǔ)概念 二、UML類圖 三、角色設(shè)計(jì) 四、案例分析 4.1、支付方式 4.2、支付渠道? 五、總結(jié) 橋接模式(Bridge Pattern)是一種結(jié)構(gòu)型設(shè)計(jì)模式,其主要目的是“將抽象部分與實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化”。 橋接模式的核心思想是把抽象(abstraction)與實(shí)現(xiàn)

    2024年02月13日
    瀏覽(22)
  • 設(shè)計(jì)模式-04.01-結(jié)構(gòu)型-代理&橋接&裝飾器&適配器

    設(shè)計(jì)模式-04.01-結(jié)構(gòu)型-代理&橋接&裝飾器&適配器

    創(chuàng)建型模式比較好理解,后面的結(jié)構(gòu)型和行為型設(shè)計(jì)模式不是那么好理解。如果遇到不好理解的設(shè)計(jì)模式,我一般會(huì)在開頭舉比較簡(jiǎn)單的Demo案例來幫助理解。 前面幾節(jié),我們講了設(shè)計(jì)模式中的創(chuàng)建型模式。創(chuàng)建型模式主要解決對(duì)象的創(chuàng)建問題,封裝復(fù)雜的創(chuàng)建過程,解耦對(duì)

    2024年02月09日
    瀏覽(24)
  • 設(shè)計(jì)模式--------結(jié)構(gòu)型模式

    設(shè)計(jì)模式--------結(jié)構(gòu)型模式

    結(jié)構(gòu)型模式描述如何將類或?qū)ο蟀茨撤N布局組成更大的結(jié)構(gòu)。它分為類結(jié)構(gòu)型模式和對(duì)象結(jié)構(gòu)型模式,前者采用繼承機(jī)制來組織接口和類,后者釆用組合或聚合來組合對(duì)象。 由于組合關(guān)系或聚合關(guān)系比繼承關(guān)系耦合度低,滿足“合成復(fù)用原則”,所以對(duì)象結(jié)構(gòu)型模式比類結(jié)構(gòu)

    2024年02月13日
    瀏覽(30)
  • 設(shè)計(jì)模式結(jié)構(gòu)型——外觀模式

    設(shè)計(jì)模式結(jié)構(gòu)型——外觀模式

    目錄 什么是外觀模式 外觀模式的實(shí)現(xiàn) 外觀模式角色 外觀模式舉例 外觀模式類圖 外觀模式代碼實(shí)現(xiàn) 外觀模式的特點(diǎn) 優(yōu)點(diǎn) 缺點(diǎn) 注意事項(xiàng) 應(yīng)用場(chǎng)景 總結(jié) ????????外觀模式(Facade Pattern):又叫作門面模式,歸屬于結(jié)構(gòu)型模式。外觀模式定義了提供了定義了一個(gè)統(tǒng)一的高層

    2024年02月16日
    瀏覽(26)
  • 設(shè)計(jì)模式之結(jié)構(gòu)型模式

    設(shè)計(jì)模式之結(jié)構(gòu)型模式

    本文已收錄于專欄 《設(shè)計(jì)模式》 ??大話設(shè)計(jì)模式主要分為三部分,第一部分是創(chuàng)建型模式,第二部分是結(jié)構(gòu)型模式,第三部分是行為型模式。至于為什么要分為這三部分,我的理解是創(chuàng)建型是用于創(chuàng)建對(duì)象的而結(jié)構(gòu)型是發(fā)生在類與類之間的關(guān)系是比較宏觀的,比如說組合

    2024年02月11日
    瀏覽(24)
  • 結(jié)構(gòu)型設(shè)計(jì)模式——外觀模式

    結(jié)構(gòu)型設(shè)計(jì)模式——外觀模式

    有句話說這個(gè)世界就是個(gè)草臺(tái)班子,只不過排面做的好看而已,里面都是一包糠。這句話來形容外觀模式非常準(zhǔn)確,外觀模式又叫門面模式,顧名思義一個(gè)系統(tǒng)我不管你里面有多復(fù)雜有多少屎山代碼,我只要求你提供的接口好用,簡(jiǎn)單就行,即門面要有排面!用專業(yè)的話講是

    2024年01月22日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包