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

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

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

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

1. 定義

橋接模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,它通過將抽象部分和實(shí)現(xiàn)部分分離,使得它們可以獨(dú)立地變化。橋接模式的核心思想是通過聚合而不是繼承來連接不同的抽象和實(shí)現(xiàn)。

橋接模式通常包含四個(gè)主要角色:抽象類(Abstraction)、擴(kuò)展抽象類(RefinedAbstraction)、實(shí)現(xiàn)接口(Implementor)和具體實(shí)現(xiàn)類(ConcreteImplementor)。

  • 抽象類(Abstraction): 定義抽象部分的接口,并包含一個(gè)指向?qū)崿F(xiàn)接口的引用
  • 擴(kuò)展抽象類(RefinedAbstraction): 對(duì)抽象類的擴(kuò)展,通常用于添加額外的功能或修改抽象部分的行為
  • 實(shí)現(xiàn)接口(Implementor): 定義實(shí)現(xiàn)部分的接口,提供基本的操作
  • 具體實(shí)現(xiàn)類(ConcreteImplementor): 實(shí)現(xiàn)實(shí)現(xiàn)接口,提供具體的操作

2. 應(yīng)用場景

橋接模式通常在以下場景中使用:

  1. 抽象和實(shí)現(xiàn)部分的變化獨(dú)立:

    當(dāng)抽象和實(shí)現(xiàn)部分的變化獨(dú)立時(shí),可以使用橋接模式。這樣可以使得兩者可以獨(dú)立地?cái)U(kuò)展,而不會(huì)相互影響

  2. 一個(gè)類存在多個(gè)獨(dú)立變化的維度:

    當(dāng)一個(gè)類存在多個(gè)獨(dú)立變化的維度時(shí),可以使用橋接模式。例如,一個(gè)形狀類可能在顏色和形狀兩個(gè)維度上都有變化

  3. 不希望使用繼承:

    當(dāng)不希望使用繼承來實(shí)現(xiàn)抽象和實(shí)現(xiàn)之間的連接時(shí),可以使用橋接模式。橋接模式通過聚合而不是繼承來連接抽象和實(shí)現(xiàn),降低了耦合度

3. 代碼實(shí)現(xiàn)

下面通過一個(gè)簡單的例子來演示橋接模式的實(shí)現(xiàn)。假設(shè)有一個(gè)形狀(Shape)類和一個(gè)顏色(Color)接口,需要在這兩者之間建立橋梁。

實(shí)現(xiàn)接口 - 顏色 Color

package com.cheney.demo;

interface Color {
    String applyColor();
}

具體實(shí)現(xiàn)類 - 紅色 Red

package com.cheney.demo;

class Red implements Color {
    @Override
    public String applyColor() {
        return "紅色";
    }
}

具體實(shí)現(xiàn)類 - 綠色 Green

package com.cheney.demo;

class Green implements Color {
    @Override
    public String applyColor() {
        return "綠色";
    }
}

抽象類 - 形狀 Shape

package com.cheney.demo;

abstract class Shape {
    protected Color color;

    public Shape(Color color) {
        this.color = color;
    }

    abstract String draw();
}

擴(kuò)展抽象類 - 圓形 Circle

package com.cheney.demo;

class Circle extends Shape {
    public Circle(Color color) {
        super(color);
    }

    @Override
    String draw() {
        return "畫一個(gè)圓,使用顏色是:" + color.applyColor();
    }
}

擴(kuò)展抽象類 - 方形 Square

package com.cheney.demo;

class Square extends Shape {
    public Square(Color color) {
        super(color);
    }

    @Override
    String draw() {
        return "畫一個(gè)方形,使用顏色是:" + color.applyColor();
    }
}

客戶端啟動(dòng)類 Main

package com.cheney.demo;

public class Main {
    public static void main(String[] args) {
        // 創(chuàng)建顏色實(shí)現(xiàn)類
        Color red = new Red();
        Color green = new Green();

        // 創(chuàng)建形狀并指定顏色
        Shape redCircle = new Circle(red);
        Shape greenSquare = new Square(green);

        // 繪制形狀
        System.out.println(redCircle.draw());
        System.out.println(greenSquare.draw());
    }
}

執(zhí)行結(jié)果:

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

在上述例子中,Color 是實(shí)現(xiàn)接口,定義了應(yīng)用顏色的操作。RedGreen 是具體實(shí)現(xiàn)類,分別表示紅色和綠色。

Shape 是抽象類,包含一個(gè)指向顏色實(shí)現(xiàn)接口的引用,并定義了繪制形狀的抽象方法。CircleSquare 是擴(kuò)展抽象類,分別表示圓形和方形,通過構(gòu)造方法指定顏色。

在客戶端中,我們創(chuàng)建了紅色和綠色的實(shí)現(xiàn)類,并使用它們來創(chuàng)建圓形和方形。通過橋接模式,我們將形狀和顏色分離,使得它們可以獨(dú)立變化。這樣,我們可以輕松地添加新的顏色或形狀而不影響原有的類結(jié)構(gòu)。

結(jié)語

橋接模式是一種強(qiáng)大的設(shè)計(jì)模式,通過將抽象和實(shí)現(xiàn)分離,使得它們可以獨(dú)立變化。在實(shí)際開發(fā)中,橋接模式常被用于處理多維度變化的場景,例如在圖形界面中處理不同外觀和主題的變化。通過合理使用橋接模式,可以使系統(tǒng)更加靈活、可擴(kuò)展,并且更容易維護(hù)。


【Java 設(shè)計(jì)模式】系列 《23 種設(shè)計(jì)模式》 與 《7 大設(shè)計(jì)原則》 總綱
??設(shè)計(jì)原則
?單一職責(zé)原則(SRP) 規(guī)定一個(gè)類應(yīng)該只有一個(gè)引起變化的原因
?開放/封閉原則(OCP) 表明軟件實(shí)體應(yīng)該是可以擴(kuò)展的,但是不可修改的
?里氏替換原則(LSP) 強(qiáng)調(diào)派生類必須能夠替代其基類而不引起程序錯(cuò)誤
?依賴倒置原則(DIP) 倡導(dǎo)高層模塊不應(yīng)該依賴于低層模塊,二者都應(yīng)該依賴于抽象
?接口隔離原則(ISP) 提倡一個(gè)類不應(yīng)該被強(qiáng)迫依賴它不使用的接口
?合成/聚合復(fù)用原則(CARP) 建議盡量使用合成/聚合,盡量不要使用繼承
?迪米特法則(LoD) 規(guī)定一個(gè)對(duì)象應(yīng)該對(duì)其他對(duì)象有最少的了解

??創(chuàng)建型設(shè)計(jì)模式
?單例模式 保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局點(diǎn)
?工廠方法模式 定義一個(gè)用于創(chuàng)建對(duì)象的接口,但是由子類決定實(shí)例化哪一個(gè)類
?抽象工廠模式 提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無需指定它們具體的類
?建造者模式 將一個(gè)復(fù)雜對(duì)象的構(gòu)建與其表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示
?原型模式 通過復(fù)制現(xiàn)有的對(duì)象來創(chuàng)建新對(duì)象,而不是從頭開始創(chuàng)建

??結(jié)構(gòu)型設(shè)計(jì)模式
?適配器模式 將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口
?橋接模式 將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化
?組合模式 將對(duì)象以樹形結(jié)構(gòu)組合以表示“部分-整體”的層次結(jié)構(gòu)
?裝飾器模式 動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的職責(zé)
?外觀模式 為子系統(tǒng)中的一組接口提供一個(gè)一致的界面
?代理模式 為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問
?享元模式 用共享的方式高效地支持大量小粒度對(duì)象

??行為型設(shè)計(jì)模式
?觀察者模式 定義對(duì)象間的一對(duì)多依賴,當(dāng)一個(gè)對(duì)象改變狀態(tài),所有依賴者都會(huì)受到通知并自動(dòng)更新
?策略模式 定義一系列算法,將它們封裝起來,并且使它們可以相互替換
?命令模式 將請(qǐng)求封裝成對(duì)象,使得可以用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化
?狀態(tài)模式 允許對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為
?責(zé)任鏈模式 為解除請(qǐng)求的發(fā)送者和接收者之間的耦合,而使多個(gè)對(duì)象都有機(jī)會(huì)處理這個(gè)請(qǐng)求
?訪問者模式 將算法與對(duì)象結(jié)構(gòu)分離,并且可以在不改變對(duì)象結(jié)構(gòu)的前提下定義新的操作
?中介者模式 用一個(gè)中介對(duì)象來封裝一系列的對(duì)象交互
?備忘錄模式 在不破壞封裝的情況下,捕獲對(duì)象的內(nèi)部狀態(tài),并在對(duì)象之外保存這個(gè)狀態(tài)
?迭代器模式 提供一種方法順序訪問一個(gè)聚合對(duì)象中的各個(gè)元素,而不暴露其內(nèi)部表示
?模版方法模式 定義一個(gè)操作中的算法的骨架,將一些步驟延遲到子類中
?解釋器模式 定義一個(gè)語言的文法,并且建立一個(gè)解釋器來解釋該語言中的句子

文章來源地址http://www.zghlxwxcb.cn/news/detail-804818.html

到了這里,關(guān)于【Java 設(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ǔ)空間服務(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)文章

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

    將抽象與實(shí)現(xiàn)解耦,使兩者都可以獨(dú)立變化。 在現(xiàn)實(shí)生活中,某些類具有兩個(gè)或多個(gè)維度的變化,如圖形既可按形狀分,又可按顏色分。如何設(shè)計(jì)類似于 Photoshop 這樣的軟件,能畫不同形狀和不同顏色的圖形呢?如果用繼承方式,m 種形狀和 n 種顏色的圖形就有 m×n 種,不但

    2024年02月05日
    瀏覽(26)
  • 【結(jié)構(gòu)型設(shè)計(jì)模式】C#設(shè)計(jì)模式之橋接模式

    題目:設(shè)計(jì)一個(gè)橋接模式來實(shí)現(xiàn)圖形和顏色之間的解耦。 解析: 橋接模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,它將抽象部分與實(shí)現(xiàn)部分分離,使它們可以獨(dú)立變化。在這個(gè)例子中,抽象部分是圖形(如圓形、正方形),實(shí)現(xiàn)部分是顏色(如紅色、藍(lán)色)。 我們可以使用橋接模式來解耦

    2024年02月13日
    瀏覽(29)
  • 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場景 ? 比如在路上隨處可見

    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)
  • 設(shè)計(jì)模式-04.01-結(jié)構(gòu)型-代理&橋接&裝飾器&適配器

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

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

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

    代理模式(Proxy Pattern)是一種結(jié)構(gòu)型設(shè)計(jì)模式, 它允許通過一個(gè)代理對(duì)象控制對(duì)其他對(duì)象的訪問 。代理模式在訪問對(duì)象時(shí)引入了一定程度的間接性,使得可以在訪問對(duì)象前后進(jìn)行一些額外的操作。在本文中,我們將深入研究Java中代理模式的定義、結(jié)構(gòu)、使用場景以及如何在

    2024年01月21日
    瀏覽(23)
  • Java學(xué)習(xí)——設(shè)計(jì)模式——結(jié)構(gòu)型模式2

    Java學(xué)習(xí)——設(shè)計(jì)模式——結(jié)構(gòu)型模式2

    結(jié)構(gòu)型模式主要涉及如何組合各種對(duì)象以便獲得更好、更靈活的結(jié)構(gòu)。雖然面向?qū)ο蟮睦^承機(jī)制提供了最基本的子類擴(kuò)展父類的功能,但結(jié)構(gòu)型模式不僅僅簡單地使用繼承,而更多地通過組合與運(yùn)行期的動(dòng)態(tài)組合來實(shí)現(xiàn)更靈活的功能。 包括: 1、適配器 2、橋接 3、組合 4、裝

    2024年02月03日
    瀏覽(27)
  • 【Java 設(shè)計(jì)模式】結(jié)構(gòu)型之外觀模式

    外觀模式(Facade Pattern)是一種結(jié)構(gòu)型設(shè)計(jì)模式, 它為復(fù)雜系統(tǒng)提供了一個(gè)簡化的接口,隱藏了系統(tǒng)的復(fù)雜性,使得客戶端更容易使用系統(tǒng) 。外觀模式通過創(chuàng)建一個(gè)包裝類(外觀類),將系統(tǒng)的復(fù)雜性封裝起來,對(duì)客戶端提供一個(gè)簡單的接口。在本文中,我們將深入研究Ja

    2024年01月21日
    瀏覽(26)
  • 【十】設(shè)計(jì)模式~~~結(jié)構(gòu)型模式~~~享元模式(Java)

    【十】設(shè)計(jì)模式~~~結(jié)構(gòu)型模式~~~享元模式(Java)

    【學(xué)習(xí)難度:★★★★☆,使用頻率:★☆☆☆☆】 ????????面向?qū)ο蠹夹g(shù)可以很好地解決一些靈活性或可擴(kuò)展性問題,但在很多情況下需要在系統(tǒng)中增加類和對(duì)象的個(gè)數(shù)。當(dāng)對(duì)象數(shù)量太多時(shí),將導(dǎo)致運(yùn)行代價(jià)過高,帶來性能下降等問題。 享元模式正是為解決這一類問題

    2024年02月08日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包