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

設(shè)計(jì)模式——橋接模式詳解

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

??橋接模式(抽象與實(shí)現(xiàn)分離)

1.1?橋接模式的定義

維基百科:橋接模式是軟件設(shè)計(jì)模式中最復(fù)雜的模式之一,它把事物對(duì)象和其具體行為、具體特征分離開來,使它們可以各自獨(dú)立的變化。

百度百科:橋接模式是將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。它是一種對(duì)象結(jié)構(gòu)型模式,又稱為柄體(Handle and Body)模式或接口(interface)模式。

1.2??橋接模式的結(jié)構(gòu)

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

  • 抽象化(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)。

1.3??橋接模式簡單案例及代碼演示

**舉個(gè)??:**假設(shè)有一個(gè)歌手,他的名字叫磊磊。磊磊會(huì)用嘴唱歌,磊磊會(huì)邊彈吉他邊唱歌。但是磊磊是個(gè)十分好學(xué)的孩子不滿足于現(xiàn)狀,于是他報(bào)了個(gè)機(jī)構(gòu)叫白馬教育,并且成為了Good Singer班中的一員。在進(jìn)行了長達(dá)兩年半的學(xué)習(xí)之后,磊磊憑借著過人的天賦學(xué)會(huì)了邊彈鋼琴邊唱歌。

如何實(shí)現(xiàn)???

a.傳統(tǒng)思路:

定義一個(gè)演員類,將用嘴唱歌,用吉他唱歌,用鋼琴唱歌寫到這個(gè)類中。

缺點(diǎn)很明顯,如果又來了一個(gè)人怎么辦,如果又學(xué)會(huì)的一個(gè)樂器怎么辦,顯然不易擴(kuò)展。

b.橋接模式思路:

在抽象類中

1.將需要橋接的接口拿到父類里

2.直接將接口屬性丟到構(gòu)造方法里,同時(shí)要在子類構(gòu)造該方法

3.調(diào)用橋接屬性開始“表演”

代碼演示:

1.定義抽象演員類(Perfomer)

package com.qf.bridge;

/**
 * @author ###
 */
public abstract class Perfomer{
    //橋接屬性
    protected IplayType playType;
    //構(gòu)造表演方法
    public Perfomer(IplayType playType){
        this.playType=playType;

    }
    //表演
    abstract protected void perform();
}

2.定義磊磊類,繼承抽象演員類

package com.qf.bridge;

public class Leilei extends Perfomer{
    //構(gòu)造方法傳遞需要的樂器表演方式
    public Leilei(IplayType playType) {
        super(playType);
    }

    @Override
    protected void perform() {
        playType.play("磊磊");
    }
}

3.設(shè)計(jì)樂器表演接口,包含一個(gè)play方法

package com.qf.bridge;

//表演方式
public interface IplayType{
    void play(String name);
}

4.定義吉他表演類遵從樂器表演接口

package com.qf.bridge;

public class Guitar implements IplayType {
    @Override
    public void play(String name) {
        System.out.println(name+"用吉他唱歌了");
    }
}

5.定義嘴巴類遵從樂器表演類

package com.qf.bridge;

public class Mouth implements IplayType{
    @Override
    public void play(String name) {
        System.out.println(name+"用嘴唱歌了");
    }
}

6.Test

package com.qf.bridge;

public class Demo1 {
    public static void main(String[] args) {
        Perfomer mouth = new Leilei(new Mouth());
        mouth.perform();

        Perfomer guitar = new Leilei(new Guitar());
        guitar.perform();

    }
}

結(jié)果展示:

橋接模式,筆記,設(shè)計(jì)模式,橋接模式,java

1.4??橋接模式的UML圖

稍作解釋:

1.+表示public,-表示private,#表示protected

2.聚合關(guān)系可以用【帶空心菱形的實(shí)線】來表示,菱形指向整體。(如:teacher是university的一個(gè)部分)

3.繼承關(guān)系用【帶空心三角箭頭的實(shí)線】來表示,箭頭從子類指向父類。

虛假的UML圖:

橋接模式,筆記,設(shè)計(jì)模式,橋接模式,java

真正的UML圖:

橋接模式,筆記,設(shè)計(jì)模式,橋接模式,java

橋接模式,筆記,設(shè)計(jì)模式,橋接模式,java

1.5??橋接模式的應(yīng)用場景

跨平臺(tái)視頻播放器,可以在不同操作系統(tǒng)平臺(tái)(如Windows、Mac、Linux等)上播放多種格式的視頻文件,常見的視頻格式包括RMVB、AVI、WMV等

1.6??橋接模式的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

  1. 分離抽象接口及其實(shí)現(xiàn)部分。使得抽象和實(shí)現(xiàn)可以沿著各自的維度來變化,也就是說抽象和實(shí)現(xiàn)不再在同一個(gè)繼承層次結(jié)構(gòu)中,而是“子類化”它們,使它們各自都具有自己的子類,以便任何組合子類,從而獲得多維度組合對(duì)象。

  2. 在很多情況下,橋接模式可以取代多層繼承方案,多層繼承方案違背了“單一職責(zé)原則”,復(fù)用性較差,且類的個(gè)數(shù)非常多,橋接模式是比多層繼承方案更好的解決方法,它極大減少了子類的個(gè)數(shù)。

    多繼承是指一個(gè)類可以同時(shí)從多個(gè)父類繼承屬性和方法。這種繼承方式可以讓子類同時(shí)擁有多個(gè)父類的特征,但也可能帶來一些問題,比如構(gòu)造函數(shù)的執(zhí)行順序和類中同名變量沖突等

  3. 橋接模式提高了系統(tǒng)的可擴(kuò)展性,在兩個(gè)變化維度中任意擴(kuò)展一個(gè)維度,都不需要修改原有系統(tǒng),符合“開閉原則”。

缺點(diǎn):

  1. 橋接模式的使用會(huì)增加系統(tǒng)的理解與設(shè)計(jì)難度,由于關(guān)聯(lián)關(guān)系建立在抽象層,要求開發(fā)者一開始就針對(duì)抽象層進(jìn)行設(shè)計(jì)與編程。
  2. 橋接模式要求正確識(shí)別出系統(tǒng)中兩個(gè)獨(dú)立變化的維度,因此其使用范圍具有一定的局限性,如何正確識(shí)別兩個(gè)獨(dú)立維度也需要一定的經(jīng)驗(yàn)積累。

1.7??橋接模式與其他模式的區(qū)別

1.橋接模式與策略模式的區(qū)別

橋接模式,筆記,設(shè)計(jì)模式,橋接模式,java

橋接模式,筆記,設(shè)計(jì)模式,橋接模式,java

1.橋接模式中不僅Implementor具有變化 ,而且Abstraction也可以發(fā)生變化,而且兩者的變化是完全獨(dú)立的

2.策略模式僅僅通過Abstraction與 Implementor之間的關(guān)系聯(lián)系起來。而在策略模式中,并不考慮Context的變化,只有算法的可替代性。

3.策略模式的目的是封裝一系列的算法,使得這些算法可以相互替換;而橋接模式的目的是分離抽象和實(shí)現(xiàn)部分,使得它們可以獨(dú)立的變化。

2.前面的路以后再來探索吧……………………….文章來源地址http://www.zghlxwxcb.cn/news/detail-736197.html

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

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(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ì)模式-橋接模式

    Java設(shè)計(jì)模式-橋接模式

    橋接模式是將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。 這個(gè)概念聽著那是相當(dāng)拗口了,其實(shí)通過例子解釋后,就能很好的理解了。 下面先看一個(gè)例子,這個(gè)例子表現(xiàn)了手機(jī)與手機(jī)軟件之間的關(guān)系 2.1HandsetSoft類 這個(gè)類是手機(jī)軟件的抽象類 2.2HandSetGame類 這個(gè)是

    2024年02月16日
    瀏覽(20)
  • Java設(shè)計(jì)模式之 -- 橋接模式

    橋接模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,也被稱為“Handle/Body”。這種設(shè)計(jì)模式主要用于將抽象部分與它的實(shí)現(xiàn)部分分離,使它們可以獨(dú)立地變化。這種方式有助于減少系統(tǒng)中的耦合性,增加了擴(kuò)展性。 橋接模式主要解決的是類的維度擴(kuò)展問題。在一個(gè)多維度變化的類中,使用繼承

    2024年02月15日
    瀏覽(28)
  • Java 設(shè)計(jì)模式之橋接模式

    橋接模式是一種結(jié)構(gòu)設(shè)計(jì)模式,它的目標(biāo)是將抽象部分與實(shí)現(xiàn)部分分離,使它們可以獨(dú)立地變化。這種模式通過將繼承關(guān)系改為組合關(guān)系來實(shí)現(xiàn)解耦。 在Java中,橋接模式的實(shí)現(xiàn)通常涉及兩個(gè)層次結(jié)構(gòu):抽象類和具體實(shí)現(xiàn)類。抽象類表示抽象部分,而具體實(shí)現(xiàn)類表示實(shí)現(xiàn)部分

    2024年02月09日
    瀏覽(21)
  • Java與設(shè)計(jì)模式(8):橋接模式

    橋接模式(Bridge Pattern)是一種軟件設(shè)計(jì)模式,它用于將抽象部分與實(shí)現(xiàn)部分分離,使它們可以獨(dú)立地變化。該模式通過將抽象類與實(shí)現(xiàn)類之間建立一個(gè)橋接(Bridge)來實(shí)現(xiàn)解耦,使得抽象部分和實(shí)現(xiàn)部分可以獨(dú)立地進(jìn)行擴(kuò)展。 在橋接模式中,抽象部分由一個(gè)抽象類或接口表

    2024年02月11日
    瀏覽(15)
  • 【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)
  • 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)
  • 【Java面試題】設(shè)計(jì)模式之七種結(jié)構(gòu)性模式——代理模式、適配器模式、橋接模式、裝飾模式、外觀模式、享元模式、組合模式

    目錄 一、代理模式 二、適配器模式 三、橋接模式 四、裝飾模式 五、外觀模式 六、享元模式 七、組合模式 概念: 代理模式是為其他對(duì)象提供一種以代理控制對(duì)這個(gè)對(duì)象的訪問。在某些情況下,一個(gè)對(duì)象不適合或者不能直接引用另一個(gè)對(duì)象,而代理對(duì)象可以在客戶端和目標(biāo)對(duì)

    2023年04月09日
    瀏覽(26)
  • 設(shè)計(jì)模式之~橋接模式

    設(shè)計(jì)模式之~橋接模式

    橋接模式: ????????將抽象部分與它的實(shí)現(xiàn)部分分離,使他們都可以獨(dú)立地變化。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它通過提供抽象化和實(shí)現(xiàn)化之間的橋接結(jié)構(gòu),來實(shí)現(xiàn)二者的解耦。 ????????什么叫抽象與它的實(shí)現(xiàn)分離,這并不是說,讓抽象類與其派生類分離,因

    2024年02月07日
    瀏覽(18)
  • 設(shè)計(jì)模式——橋接模式

    設(shè)計(jì)模式——橋接模式

    引用 橋 我們大家都熟悉,顧名思義就是用來將河的兩岸聯(lián)系起來的。而此處的橋是用來將兩個(gè)獨(dú)立的結(jié)構(gòu)聯(lián)系起來,而這兩個(gè)被聯(lián)系起來的結(jié)構(gòu)可以獨(dú)立的變化,所有其他的理解只要建立在這個(gè)層面上就會(huì)比較容易。 基本介紹 橋接模式(Bridge)是指將實(shí)現(xiàn)與抽象放在兩個(gè)不

    2024年02月12日
    瀏覽(23)
  • 設(shè)計(jì)模式 07 橋接模式

    橋接模式(Bridge Pattern)屬于 結(jié)構(gòu)型 模式 橋接模式是將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。它是一種對(duì)象結(jié)構(gòu)型模式,又稱為 柄體 (Handle and Body)模式或 接口 (Interface)模式。 比如需要?jiǎng)?chuàng)建電腦對(duì)象,市面上的電腦非常多, 品牌 有華為、蘋果、聯(lián)

    2024年02月11日
    瀏覽(15)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包