目錄
java23種設計模式—— 一、設計模式介紹
java23種設計模式—— 二、單例模式
java23種設計模式——三、工廠模式
java23種設計模式——四、原型模式
java23種設計模式——五、建造者模式
java23種設計模式——六、適配器模式
java23種設計模式——七、橋接模式
java23種設計模式——八、組合模式
介紹
適配器模式(Adapter Pattern)是作為兩個不兼容的接口之間的橋梁。這種類型的設計模式屬於結構型模式,它結合了兩個獨立接口的功能。
這種模式涉及到一個單一的類,該類負責加入獨立的或不兼容的接口功能。舉個真實的例子,現在我們很多手機沒有了耳機的插孔,只留下了type-c的插口,如果我們想使用有線耳機的話就要買一個耳機轉type-c的轉換器
應用場景
系統需要使用現有的類,而此類的接口不符合系統的需要。
想要建立一個可以重復使用的類,用於與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作,這些源類不一定有一致的接口。
通過接口轉換,將一個類插入另一個類系中。
優缺點
- 優點
1、可以讓任何兩個沒有關聯的類一起運行。
2、提高了類的復用。
3、增加了類的透明度。
4、靈活性好。
- 缺點
1、過多地使用適配器,會讓系統非常零亂,不易整體進行把握。比如,明明看到調用的是 A 接口,其實內部被適配成了 B 接口的實現,一個系統如果太多出現這種情況,無異於一場災難。因此如果不是很有必要,可以不使用適配器,而是直接對系統進行重構。
2.由於 JAVA 至多繼承一個類,所以至多只能適配一個適配者類,而且目標類必須是抽象類。
模式實現
適配器模式有如下三個個角色:
- 源(Adaptee):目標抽象類定義客戶所需接口,可以是一個抽象類或接口,也可以
是具體類,相當於typec線。 - 適配器(Adapter):連接目標和源的中間對象,可以調用另一個接口,作為一個轉換器。相當於耳機轉typec轉換器。
- 目標(Target):即被適配的角色,相當於手機。
首先我們有一個手機類,有一個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接口
充電 -------------- > 聽歌