首頁 > Java > java教程 > Java設計模式的橋接模式怎麼實現

Java設計模式的橋接模式怎麼實現

WBOY
發布: 2023-05-16 12:52:06
轉載
1221 人瀏覽過

什麼是橋接模式

橋接(Bridge)模式的定義如下: 將抽象與實作分離,使它們可以獨立變更。它是用組合關係代替繼承關係來實現,從而降低了抽象化和實現這兩個可變維度的耦合度。

優點

1、抽象與實作分離,擴展能力強

2、符合開閉原則

#3、符合合成復用原則

4、其實作細節對客戶透明

缺點

由於聚合關係建立在抽象層,要求開發者針對抽象化進行設計與編程,能正確辨識系統中兩個獨立變化的維度,這增加了系統的理解與設計難度。

知識點

可以將抽象部分與實作化部分分開,取消二者的繼承關係,改用組合關係。

橋接模式實現

案例: 藍兔宮主買裙子

裙子分兩個維度,分別是顏色和樣式。

顏色有黃色和紅色;

樣式分長裙和短裙;

# 抽象化(Abstraction)角色:顏色

# 擴展抽象( Refined Abstraction)角色: 黃色和紅色

實現化(Implementor)角色: 樣式

具體實現化(Concrete Implementor)角色:長裙和短裙

顏色

顏色接口,宣告一個show()抽象方法

public interface Color {
    void show();
}
登入後複製
黃色

黃色類別並實作顏色介面

public class ColorYellow implements Color {
    @Override
    public void show() {
        System.out.println("黄色的");
    }
}
登入後複製
紅色

紅色類別並實作顏色介面

public class ColorRed implements Color {
    @Override
    public void show() {
        System.out.println("红色的");
    }
}
登入後複製

裙子

裙子類,聲明一個顏色屬性和一個抽象方法

abstract class Qun {
    protected Color color;
    protected Qun() {
    }
    protected Qun(Color color) {
        this.color = color;
    }
    public abstract void shows();
}
登入後複製
長裙

繼承裙子類,並實作抽象方法

public class QunChang extends Qun {
    protected QunChang() {
    }
    protected QunChang(Color color) {
        super(color);
    }
    @Override
    public void shows() {
        System.out.println("长裙");
        color.show();
    }
}
登入後複製
短裙

繼承裙子類,並實作抽象方法

public class QunDuan extends Qun {
    protected QunDuan() {
    }
    protected QunDuan(Color color) {
        super(color);
    }
    @Override
    public void shows() {
        System.out.println("短裙");
        color.show();
    }
}
登入後複製

測試

new一個紅色物件作為參數傳給長裙。

public class Demo {
    public static void main(String[] args) {
        Color color = new ColorRed();
        Qun qun = new QunChang(color);
        qun.shows();
    }
}
登入後複製

Java設計模式的橋接模式怎麼實現

#

以上是Java設計模式的橋接模式怎麼實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板