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)文章
IntelliJ IDEA使用教程從入門到上癮(2019圖文版)
這篇文章主要介紹了IntelliJ IDEA使用教程從入門到上癮(2019圖文版),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12
Java Lambda表達式的方法引用和構(gòu)造器引用實例分析
這篇文章主要介紹了Java Lambda表達式的方法引用和構(gòu)造器引用,結(jié)合實例形式分析了Lambda表達式的方法引用和構(gòu)造器引用相關(guān)原理、用法及操作注意事項,需要的朋友可以參考下2019-09-09
SpringBoot JPA出現(xiàn)錯誤:No identifier specified&nb
這篇文章主要介紹了SpringBoot JPA出現(xiàn)錯誤:No identifier specified for en解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
關(guān)于SpringBoot自定義條件注解與自動配置
這篇文章主要介紹了關(guān)于SpringBoot自定義條件注解與自動配置,Spring Boot的核心功能就是為整合第三方框架提供自動配置,而本文則帶著大家實現(xiàn)了自己的自動配置和Starter,需要的朋友可以參考下2023-07-07
詳解java中面向?qū)ο笤O(shè)計模式類與類的關(guān)系
這篇文章主要介紹了java面向?qū)ο笤O(shè)計模式中類與類之間的關(guān)系,下面小編和大家一起來學(xué)習(xí)一下吧2019-05-05
java.lang.OutOfMemoryError 錯誤整理及解決辦法
這篇文章主要介紹了java.lang.OutOfMemoryError 錯誤整理及解決辦法的相關(guān)資料,需要的朋友可以參考下2016-10-10
SSH框架網(wǎng)上商城項目第7戰(zhàn)之整合Struts2和Json
SSH框架網(wǎng)上商城項目第7戰(zhàn)之整合Struts2和Json,打通EasyUI和Struts2之間的交互,感興趣的小伙伴們可以參考一下2016-05-05

