定義
適配器模式(Adapter)是將一個(gè)類(lèi)(對(duì)象)的接口(方法或?qū)傩裕┺D(zhuǎn)換成客戶希望的另外一個(gè)接口(方法或?qū)傩裕?,適配器模式使得原本由于接口不兼容而不能一起工作的那些(對(duì)象)可以一起工作。
作用及注意事項(xiàng)
模式作用
- 使用一個(gè)已經(jīng)存在的對(duì)象,但其方法或接口不符合你的要求;
- 創(chuàng)建一個(gè)可復(fù)用的對(duì)象,該對(duì)象可以與其他不相關(guān)或者不可見(jiàn)的對(duì)象協(xié)同工作。
- 使用已經(jīng)存在的一個(gè)或多個(gè)對(duì)象,但是不能進(jìn)行繼承已匹配它的接口。
注意事項(xiàng):
與代理模式的區(qū)別,代理模式是不改變?cè)瓉?lái)的接口,適配器模式是原來(lái)的接口不符合規(guī)范。
實(shí)例
假如之前寫(xiě)好的代碼如下
var old = {
test: function() {
console.log(`我是舊的test`)
},
go: function() {
console.log(`我是舊的go`)
}
}
//調(diào)用
old.test()
old.go()
后來(lái)old對(duì)象被重構(gòu)了改為了如下代碼
function newFn() {
this.test = function() {
console.log(`我是新的test`)
}
}
newFn.prototype.gogo = function() {
console.log(`我是新的gogo`)
}
為了不修改調(diào)用的方式可以通過(guò)一個(gè)適配器解決
function shipeiqi() {
var s = new newFn;// new 的時(shí)候后面的括號(hào)不是執(zhí)行的意思,是將這一塊的優(yōu)先級(jí)提升上去了.所有這里可以不加括號(hào)
var old = {
test: function() {
s.test()
},
go: function() {
s.gogo()
}
}
return old;
}
//使用適配器之后就可以保持原來(lái)的調(diào)用方式了
var old = shipeiqi()
old.test()
old.go()