本篇文章主要講三個(gè)點(diǎn):
????1. 什么是橋接模式.
????2. 橋接模式的優(yōu)缺點(diǎn).
????3. demo.
1. 橋接模式
? ? 將抽象部分和實(shí)現(xiàn)部分分離, 使他們都可以獨(dú)立的變化.
? ? 橋接模式的原理: 抽象層和實(shí)現(xiàn)層相分離, 抽象層定義了供我們使用的抽象接口, 實(shí)現(xiàn)層提供了具體的邏輯, 實(shí)現(xiàn)類的引用被封裝到了抽象層的實(shí)例之中, 即完成了橋接模式.
2. 橋接模式的優(yōu)缺點(diǎn)
? ? 優(yōu)點(diǎn): ①. 將依賴具體的實(shí)現(xiàn), 改為依賴抽象的實(shí)現(xiàn), 達(dá)到解耦合的目的.
? ? ? ? ? ? ?②. 分離接口和實(shí)現(xiàn)部分.
? ? ? ? ? ? ?③. 提高了擴(kuò)展性.
????缺點(diǎn):?會(huì)增加系統(tǒng)的理解與設(shè)計(jì)難度, 由于聚合關(guān)系建立在抽象層, 要求開發(fā)者針對(duì)抽象進(jìn)行設(shè)計(jì)與編程.
3. demo
? ? ? 正常情況下, 都是一把鑰匙開一把鎖, 但是有些需求是要用一個(gè)萬(wàn)能鑰匙給所有鎖都打開, 先看一下 demo 的 UML 原理圖:
? ? ? 想要用萬(wàn)能鑰匙開奧迪和寶馬, 先看一下汽車的抽象類, 里面就只有一個(gè)抽象方法:
? ? ? ? ? 下面的代碼是奧迪和寶馬繼承自汽車類, 并且實(shí)現(xiàn)了抽象方法:
? ? ? 鑰匙抽象類聚合了 Car 類, 并且有兩個(gè)抽象方法:
? ? ? 萬(wàn)能鑰匙繼承自鑰匙抽象類, 并且實(shí)現(xiàn)了抽象方法:
? ? ? FirstCtrl 里面進(jìn)行了對(duì)萬(wàn)能鑰匙的調(diào)用, 實(shí)際上萬(wàn)能鑰匙只是改變了汽車的種類, 就像是我們用的萬(wàn)能遙控器, 只是改變要配對(duì)的設(shè)備, 其余操作相同, 原理其實(shí)就是利用了多態(tài)啦.
? ? ? 橋接模式的應(yīng)用場(chǎng)景還是蠻多的, 發(fā)現(xiàn)有個(gè)大佬寫橋接模式寫的蠻好的, 放一個(gè)傳送門, 我也是處在一個(gè)學(xué)習(xí)階段, 所以有些觀點(diǎn)可能偏淺, 有什么不足之處還望見(jiàn)諒.
? ? ? 這里是 demo 的?傳送門,?如果喜歡的話, 大家可以為這篇文章點(diǎn)個(gè) ??, 加個(gè)關(guān)注呦!