适配器模式理解和使用
內(nèi)容參考??https://www.jianshu.com/p/9d0575311214?、慕課網(wǎng)
1. 是什么?作用?
- 定義一個包裝類(Adapter),用于包裝不兼容接口的對象(Adaptee)
- 作用
- 優(yōu)點: 可以讓接口不兼容而不能一起工作的那些類可以在一起工作
- 缺點:?過多的使用適配器,會讓系統(tǒng)非常零亂,不易整體進行把握
2. 理解
分為兩個模式
- 類的適配器模式、
- 對象的適配器模式
3. 使用實例
a. 實例概況 -?類的適配器模式 - 繼承的方式
- 背景:買了一個進口筆記本電腦
- 沖突:筆記本電腦需要的三項電源,和只提供的二項電源沖突
- 解決方案:設(shè)置一個適配器二項充電口轉(zhuǎn)化為三項充電口
步驟1:?創(chuàng)建Target接口(期待得到的插頭):能輸出三項供電
/*** 插頭提供三項供電 (target)*/ public interface ThreePower {/*** 三項供電*/void powerByThree(); }?
步驟2:?創(chuàng)建源類(現(xiàn)有的插頭)
/*** 插頭 提供二項供電 Adaptee*/ public class TwoPower {public void powerByTwo() {System.out.println("提供二項供電");} }?
步驟3:創(chuàng)建適配器類(Adapter)
/*** 二項轉(zhuǎn)三項的適配器 繼承的方式 類*/ public class TwoToThreeAdapter2 extends TwoPower implements ThreePower {@Overridepublic void powerByThree() {System.out.println("借助繼承適配器轉(zhuǎn)化二項電");this.powerByTwo();} }步驟4:定義具體使用目標(biāo)類,并通過Adapter類調(diào)用所需要的方法從而實現(xiàn)目標(biāo), 讓筆記本能夠用使用三項電
/*** 筆記本電腦 這是使用組合模式的-適配器模式*/ public class NoteBook {/*** 期望的三項供電接口*/private ThreePower threePower;public NoteBook(ThreePower threePower) {this.threePower = threePower;}public static void main(String[] args) {// ============================ 繼承方式的適配器使用 類適配器 =====================================ThreePower threePower1 = new TwoToThreeAdapter2();NoteBook noteBook1 = new NoteBook(threePower1);noteBook1.recharge();noteBook1.work();}public void work() {System.out.println("筆記本電腦開始工作!");}public void recharge() {// 使用三項充電 threePower.powerByThree();} }?
b. 實例概況 - 對象的適配器模式 - 組合的方式 (感覺用的更多)
與類的適配器模式相同,對象的適配器模式也是把適配的類的API轉(zhuǎn)換成為目標(biāo)類的API。
步驟1:?創(chuàng)建Target接口(期待得到的插頭):能輸出三項供電
// 參照如上步驟2:?創(chuàng)建源類(現(xiàn)有的插頭)
// 參照如上步驟3:?創(chuàng)建適配器類(Adapter)(不使用繼承而是委派)
/*** 二項轉(zhuǎn)三項的適配器 組合的方式 對象適配器*/ public class TwoToThreeAdapter implements ThreePower{private TwoPower twoPower;public TwoToThreeAdapter(TwoPower twoPower) {this.twoPower = twoPower;}@Overridepublic void powerByThree() {System.out.println("借助組合適配器轉(zhuǎn)化二項電");twoPower.powerByTwo();} }
步驟4:定義具體使用目標(biāo)類,并通過Adapter類調(diào)用所需要的方法從而實現(xiàn)目標(biāo)
/*** 筆記本電腦 這是使用組合模式的-適配器模式*/ public class NoteBook {/*** 期望的三項供電接口*/private ThreePower threePower;public NoteBook(ThreePower threePower) {this.threePower = threePower;}public static void main(String[] args) {// ============================ 組合方式的適配器使用 對象適配器 =====================================// 現(xiàn)在只有二項供電TwoPower twoPower = new TwoPower();ThreePower threePower = new TwoToThreeAdapter(twoPower);NoteBook noteBook = new NoteBook(threePower);// 1. 充電 noteBook.recharge();// 2. 工作 noteBook.work();}public void work() {System.out.println("筆記本電腦開始工作!");}public void recharge() {// 使用三項充電 threePower.powerByThree();} }4. 總結(jié)
第二種對象的適配器模式在angular里面注入組件時用的應(yīng)該是適配器模式, 使用屬性來組合,耦合性第一點
第一種類的適配器模式解耦合更好,因為要繼承
適配器好處
- 重用
- 復(fù)用的現(xiàn)存的類, 解決了現(xiàn)存類和復(fù)用環(huán)境要不一致的問題
- 低耦合
- 無需修改原有代碼(遵循開閉原則)
?
轉(zhuǎn)載于:https://www.cnblogs.com/milicool/p/11125973.html
總結(jié)
以上是生活随笔為你收集整理的适配器模式理解和使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【洛谷 2782】友好城市
- 下一篇: 最后一次作业-----课程总结