Java設(shè)計模式以虹貓藍兔的故事講解橋接模式
模式: 橋接模式
案例: 藍兔宮主買裙子
什么是橋接模式
橋接(Bridge)模式的定義如下: 將抽象與實現(xiàn)分離,使它們可以獨立變化。它是用組合關(guān)系代替繼承關(guān)系來實現(xiàn),從而降低了抽象和實現(xiàn)這兩個可變維度的耦合度。
優(yōu)點
1、抽象與實現(xiàn)分離,擴展能力強
2、符合開閉原則
3、符合合成復(fù)用原則
4、其實現(xiàn)細節(jié)對客戶透明
缺點
由于聚合關(guān)系建立在抽象層,要求開發(fā)者針對抽象化進行設(shè)計與編程,能正確地識別出系統(tǒng)中兩個獨立變化的維度,這增加了系統(tǒng)的理解與設(shè)計難度。
知識點
可以將抽象化部分與實現(xiàn)化部分分開,取消二者的繼承關(guān)系,改用組合關(guān)系。
橋接模式實現(xiàn)
案例: 藍兔宮主買裙子
裙子分兩個維度,分別是顏色和樣式。
顏色有黃色和紅色;
樣式分長裙和短裙;
抽象化(Abstraction)角色: 顏色
擴展抽象化(Refined Abstraction)角色: 黃色和紅色
實現(xiàn)化(Implementor)角色: 樣式
具體實現(xiàn)化(Concrete Implementor)角色: 長裙和短裙
顏色
顏色接口,聲明一個show()抽象方法
public interface Color { void show(); }
黃色
黃色類并實現(xiàn)顏色接口
public class ColorYellow implements Color { @Override public void show() { System.out.println("黃色的"); } }
紅色
紅色類并實現(xiàn)顏色接口
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(); }
長裙
繼承裙子類,并實現(xiàn)抽象方法
public class QunChang extends Qun { protected QunChang() { } protected QunChang(Color color) { super(color); } @Override public void shows() { System.out.println("長裙"); color.show(); } }
短裙
繼承裙子類,并實現(xiàn)抽象方法
public class QunDuan extends Qun { protected QunDuan() { } protected QunDuan(Color color) { super(color); } @Override public void shows() { System.out.println("短裙"); color.show(); } }
測試
new一個紅色對象作為參數(shù)傳給長裙。
public class Demo { public static void main(String[] args) { Color color = new ColorRed(); Qun qun = new QunChang(color); qun.shows(); } }
總結(jié)
當(dāng)一個類內(nèi)部具備兩種或多種變化維度時,使用橋接模式可以解耦這些變化的維度,使高層代碼架構(gòu)穩(wěn)定。
到此這篇關(guān)于Java設(shè)計模式以虹貓藍兔的故事講解橋接模式的文章就介紹到這了,更多相關(guān)Java橋接模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
javaweb判斷當(dāng)前請求是否為移動設(shè)備訪問的方法
這篇文章主要為大家詳細介紹了javaweb判斷當(dāng)前請求是否為移動設(shè)備訪問的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05Java中的關(guān)鍵字_動力節(jié)點Java學(xué)院整理
關(guān)鍵字也稱為保留字,是指Java語言中規(guī)定了特定含義的標(biāo)示符。對于保留字,用戶只能按照系統(tǒng)規(guī)定的方式使用,不能自行定義2017-04-04Kotlin基礎(chǔ)教程之?dāng)?shù)據(jù)類型
這篇文章主要介紹了Kotlin基礎(chǔ)教程之?dāng)?shù)據(jù)類型的相關(guān)資料,需要的朋友可以參考下2017-05-05解決SpringBoot框架因post數(shù)據(jù)量過大沒反應(yīng)問題(踩坑)
這篇文章主要介紹了解決SpringBoot框架因post數(shù)據(jù)量過大沒反應(yīng)問題(踩坑),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09Java?Ribbon與openfeign區(qū)別和用法講解
Ribbon是基于Netflix?Ribbon實現(xiàn)的一套客戶端負載均衡的工具,主要功能是提供客戶端的軟件負載均衡算法和服務(wù)調(diào)用。openfeign對Feign進行了增強,使其支持Spring MVC注解,另外還整合了Ribbon和Nacos,從而使得Feign的使用更加方便2022-08-08