java23種設計模式—— 1、設計模式介紹
java23種設計模式—— 2、單例模式
java23種設計模式——3、工廠模式
java23種設計模式——4、原型模式
java23種設計模式——5、建造者模式
java23種設計模式——6、適配器模式java
適配器模式(Adapter Pattern)是做爲兩個不兼容的接口之間的橋樑。這種類型的設計模式屬於結構型模式,它結合了兩個獨立接口的功能。git
這種模式涉及到一個單一的類,該類負責加入獨立的或不兼容的接口功能。舉個真實的例子,如今咱們不少手機沒有了耳機的插孔,只留下了type-c的插口,若是咱們想使用有線耳機的話就要買一個耳機轉type-c的轉換器github
系統須要使用現有的類,而此類的接口不符合系統的須要。
想要創建一個能夠重複使用的類,用於與一些彼此之間沒有太大關聯的一些類,包括一些可能在未來引進的類一塊兒工做,這些源類不必定有一致的接口。
經過接口轉換,將一個類插入另外一個類系中。設計模式
一、可讓任何兩個沒有關聯的類一塊兒運行。bash
二、提升了類的複用。ide
三、增長了類的透明度。this
四、靈活性好。設計
一、過多地使用適配器,會讓系統很是零亂,不易總體進行把握。好比,明明看到調用的是 A 接口,其實內部被適配成了 B 接口的實現,一個系統若是太多出現這種狀況,無異於一場災難。所以若是不是頗有必要,能夠不使用適配器,而是直接對系統進行重構。code
2.因爲 JAVA 至多繼承一個類,因此至多隻能適配一個適配者類,並且目標類必須是抽象類。
適配器模式有以下三個個角色:
首先咱們有一個手機類,有一個typec接口默承認以充電
/** * @author codermy * @createTime 2020/7/25 */ public class Phone { public String throwTypec(){ System.out.println("使用了typec接口"); return "充電"; } }
有一個耳機能夠放音樂
/** * @author codermy * @createTime 2020/7/25 */ public interface Headset { String music(); }
如今買了一個轉換器可讓有線耳機連接手機
/** * @author codermy * @createTime 2020/7/25 * 轉換器 */ public class Converter implements Headset { private Phone phone; public Converter(Phone phone){ this.phone = phone; } @Override public String music() { String s = phone.throwTypec(); System.out.println(String.format("%s -------------- > %s",s,"聽歌")); return "聽歌"; } }
用戶使用轉接器
/** * @author codermy * @createTime 2020/7/25 */ public class Client { public static void main(String[] args) { Phone phone = new Phone(); Headset headset = new Converter(phone); headset.music(); } }
輸出
使用了typec接口 充電 -------------- > 聽歌