Java设计模式---桥接Bridge模式
參考于 :
大話設(shè)計(jì)模式
馬士兵設(shè)計(jì)模式視頻
寫在開頭: 橋接模式主要用于一件事物分成了兩個維度,進(jìn)行排列組合,比如禮物,可以分成優(yōu)雅的禮物(抽象),花(具體),排列組合優(yōu)雅的花!
1.為什么使用橋接模式
小丁追小彭,送禮物必不可少。面向?qū)ο蟮乃季S,如何去實(shí)現(xiàn)這個禮物,先定義一個禮物的接口或抽象類,然后只要實(shí)現(xiàn)了這個接口那就算一個禮物。
小彭是一個精致的女孩,我要送一個精致的禮物,好,按照上面的思路,實(shí)現(xiàn)禮物接口。小丁進(jìn)了花店,哇,花朵,嗯,花朵也算禮物,實(shí)現(xiàn)禮物接口。
小丁想挑精致的花朵,用面向?qū)ο蟮乃枷?#xff0c;嗯,直接繼承精致的禮物就實(shí)現(xiàn)了精致花朵。
但是,小丁仔細(xì)一想,這只是花店,只有花朵,實(shí)現(xiàn)起來不復(fù)雜,如果進(jìn)了一家百貨商店,那么就要這樣實(shí)現(xiàn),相當(dāng)麻煩。
2.使用橋接模式
使用前先解釋上面圖片中的話:
將抽象部分和實(shí)現(xiàn)部分分離 : 上面例子中,精致的禮物就是一個比較抽象的部分,精致的花就是一個實(shí)現(xiàn)部分,上面例子中,這兩個是繼承關(guān)系,現(xiàn)在需要進(jìn)行分離。
使用聚合關(guān)系來替換繼承關(guān)系
下面代碼中Gift接口可去,去了后類的關(guān)系就和最上面那張UML一樣
下面代碼的UML類圖
?
package com.dingyu; /*** 實(shí)現(xiàn)了這個接口,表示你是一個禮物* @author dingyu**/ public interface Gift {} package com.dingyu; /*** 一個精致的禮物* 抽象部分有一個具體的部分* @author dingyu**/ public class GraceGift implements Gift {private GiftImpl giftImpl;public GraceGift(GiftImpl giftImpl) {this.giftImpl = giftImpl;}public GiftImpl getGiftImpl() {return giftImpl;}public void setGiftImpl(GiftImpl giftImpl) {this.giftImpl = giftImpl;}} package com.dingyu; /*** 具體的禮物* @author dingyu**/ public interface GiftImpl {} package com.dingyu;public class Flower implements GiftImpl {} package com.dingyu;public class Shorts implements GiftImpl {} package com.dingyu;/*** 男孩類* * @author dingyu**/ public class Boy {private String name = "xiaoding";public void sendGift() {Gift gift1;Gift gift2;gift1 = new GraceGift(new Shorts());gift2 = new GraceGift(new Flower());} }?
?
轉(zhuǎn)載于:https://www.cnblogs.com/dddyyy/p/10046548.html
總結(jié)
以上是生活随笔為你收集整理的Java设计模式---桥接Bridge模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电力电子技术学习笔记
- 下一篇: react结合ts与mobx环境搭建步骤