Java設(shè)計(jì)模式以虹貓藍(lán)兔的故事講解橋接模式
模式: 橋接模式
案例: 藍(lán)兔宮主買(mǎi)裙子
什么是橋接模式
橋接(Bridge)模式的定義如下: 將抽象與實(shí)現(xiàn)分離,使它們可以獨(dú)立變化。它是用組合關(guān)系代替繼承關(guān)系來(lái)實(shí)現(xiàn),從而降低了抽象和實(shí)現(xiàn)這兩個(gè)可變維度的耦合度。
優(yōu)點(diǎn)
1、抽象與實(shí)現(xiàn)分離,擴(kuò)展能力強(qiáng)
2、符合開(kāi)閉原則
3、符合合成復(fù)用原則
4、其實(shí)現(xiàn)細(xì)節(jié)對(duì)客戶透明
缺點(diǎn)
由于聚合關(guān)系建立在抽象層,要求開(kāi)發(fā)者針對(duì)抽象化進(jìn)行設(shè)計(jì)與編程,能正確地識(shí)別出系統(tǒng)中兩個(gè)獨(dú)立變化的維度,這增加了系統(tǒng)的理解與設(shè)計(jì)難度。
知識(shí)點(diǎn)
可以將抽象化部分與實(shí)現(xiàn)化部分分開(kāi),取消二者的繼承關(guān)系,改用組合關(guān)系。
橋接模式實(shí)現(xiàn)
案例: 藍(lán)兔宮主買(mǎi)裙子
裙子分兩個(gè)維度,分別是顏色和樣式。
顏色有黃色和紅色;
樣式分長(zhǎng)裙和短裙;
抽象化(Abstraction)角色: 顏色
擴(kuò)展抽象化(Refined Abstraction)角色: 黃色和紅色
實(shí)現(xiàn)化(Implementor)角色: 樣式
具體實(shí)現(xiàn)化(Concrete Implementor)角色: 長(zhǎng)裙和短裙
顏色
顏色接口,聲明一個(gè)show()抽象方法
public interface Color {
void show();
}
黃色
黃色類并實(shí)現(xiàn)顏色接口
public class ColorYellow implements Color {
@Override
public void show() {
System.out.println("黃色的");
}
}
紅色
紅色類并實(shí)現(xiàn)顏色接口
public class ColorRed implements Color {
@Override
public void show() {
System.out.println("紅色的");
}
}
裙子
裙子類,聲明一個(gè)顏色屬性和一個(gè)抽象方法
abstract class Qun {
protected Color color;
protected Qun() {
}
protected Qun(Color color) {
this.color = color;
}
public abstract void shows();
}長(zhǎng)裙
繼承裙子類,并實(shí)現(xiàn)抽象方法
public class QunChang extends Qun {
protected QunChang() {
}
protected QunChang(Color color) {
super(color);
}
@Override
public void shows() {
System.out.println("長(zhǎng)裙");
color.show();
}
}短裙
繼承裙子類,并實(shí)現(xiàn)抽象方法
public class QunDuan extends Qun {
protected QunDuan() {
}
protected QunDuan(Color color) {
super(color);
}
@Override
public void shows() {
System.out.println("短裙");
color.show();
}
}測(cè)試
new一個(gè)紅色對(duì)象作為參數(shù)傳給長(zhǎng)裙。
public class Demo {
public static void main(String[] args) {
Color color = new ColorRed();
Qun qun = new QunChang(color);
qun.shows();
}
}

總結(jié)
當(dāng)一個(gè)類內(nèi)部具備兩種或多種變化維度時(shí),使用橋接模式可以解耦這些變化的維度,使高層代碼架構(gòu)穩(wěn)定。
到此這篇關(guān)于Java設(shè)計(jì)模式以虹貓藍(lán)兔的故事講解橋接模式的文章就介紹到這了,更多相關(guān)Java橋接模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IntelliJ IDEA使用教程從入門(mén)到上癮(2019圖文版)
這篇文章主要介紹了IntelliJ IDEA使用教程從入門(mén)到上癮(2019圖文版),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
Java Lambda表達(dá)式的方法引用和構(gòu)造器引用實(shí)例分析
這篇文章主要介紹了Java Lambda表達(dá)式的方法引用和構(gòu)造器引用,結(jié)合實(shí)例形式分析了Lambda表達(dá)式的方法引用和構(gòu)造器引用相關(guān)原理、用法及操作注意事項(xiàng),需要的朋友可以參考下2019-09-09
SpringBoot JPA出現(xiàn)錯(cuò)誤:No identifier specified&nb
這篇文章主要介紹了SpringBoot JPA出現(xiàn)錯(cuò)誤:No identifier specified for en解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
關(guān)于SpringBoot自定義條件注解與自動(dòng)配置
這篇文章主要介紹了關(guān)于SpringBoot自定義條件注解與自動(dòng)配置,Spring Boot的核心功能就是為整合第三方框架提供自動(dòng)配置,而本文則帶著大家實(shí)現(xiàn)了自己的自動(dòng)配置和Starter,需要的朋友可以參考下2023-07-07
Java實(shí)現(xiàn)定時(shí)任務(wù)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)定時(shí)任務(wù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09
詳解java中面向?qū)ο笤O(shè)計(jì)模式類與類的關(guān)系
這篇文章主要介紹了java面向?qū)ο笤O(shè)計(jì)模式中類與類之間的關(guān)系,下面小編和大家一起來(lái)學(xué)習(xí)一下吧2019-05-05
java.lang.OutOfMemoryError 錯(cuò)誤整理及解決辦法
這篇文章主要介紹了java.lang.OutOfMemoryError 錯(cuò)誤整理及解決辦法的相關(guān)資料,需要的朋友可以參考下2016-10-10
java非公平鎖知識(shí)點(diǎn)實(shí)例詳解
在本篇文章里小編給大家整理了一篇關(guān)于java非公平鎖知識(shí)點(diǎn)實(shí)例詳解,有興趣的朋友們可以學(xué)習(xí)參考下。2021-10-10
SSH框架網(wǎng)上商城項(xiàng)目第7戰(zhàn)之整合Struts2和Json
SSH框架網(wǎng)上商城項(xiàng)目第7戰(zhàn)之整合Struts2和Json,打通EasyUI和Struts2之間的交互,感興趣的小伙伴們可以參考一下2016-05-05

