適配器模式的做用是解決兩個對象間的接口不兼容的問題。使用適配器模式以後,本來因爲接口不兼容而不能工做的兩個對象能夠一塊兒工做。設計模式
舉個生活中的例子:港式插頭轉換器,港式的電器插頭比大陸的電器插頭體積要大一些。若是從香港買了一個 Mac book,咱們會發現充電器沒法插在家裏的插座上,爲此而改造家裏的插座顯然不方便,因此咱們須要一個轉換插頭。函數
經過上述例子,咱們能夠知道適配器模式有三個角色:測試
class Target {
small(){
throw new Error('This method must be overwritten!');
}
}
複製代碼
由Target接口實現目標角色,用戶期待更小的電器插頭。ui
class Adaptee {
big(){
console.log("港式的電器插頭可用咯~~");
}
}
複製代碼
Adaptee 屬於更大的港式的電器插頭,這和用戶所指望的不一樣。因此這裏須要引入適配器,去轉換成用戶所期待的目標接口。this
class Adapter extends Target {
constructor(adaptee) {
super();
this.adaptee = adaptee;
}
small() {
this.adaptee.big();
}
}
複製代碼
Adapter 類繼承了 Target,重寫 small 函數,最後經過適配器,把港式big轉成了大陸的small了。spa
let adaptee=new Adaptee();
let adapter=new Adapter(adaptee);
adapter.small();
# 港式的電器插頭可用咯~~
複製代碼