定义
适配器模式(Adapter)是将一个类(对象)的接口(方法或属性)转换成客户希望的另外一个接口(方法或属性),适配器模式使得原本由于接口不兼容而不能一起工作的那些(对象)可以一起工作。
作用及注意事项
模式作用
- 使用一个已经存在的对象,但其方法或接口不符合你的要求;
- 创建一个可复用的对象,该对象可以与其他不相关或者不可见的对象协同工作。
- 使用已经存在的一个或多个对象,但是不能进行继承已匹配它的接口。
注意事项:
与代理模式的区别,代理模式是不改变原来的接口,适配器模式是原来的接口不符合规范。
实例
假如之前写好的代码如下
var old = {
test: function() {
console.log(`我是旧的test`)
},
go: function() {
console.log(`我是旧的go`)
}
}
//调用
old.test()
old.go()
后来old对象被重构了改为了如下代码
function newFn() {
this.test = function() {
console.log(`我是新的test`)
}
}
newFn.prototype.gogo = function() {
console.log(`我是新的gogo`)
}
为了不修改调用的方式可以通过一个适配器解决
function shipeiqi() {
var s = new newFn;// new 的时候后面的括号不是执行的意思,是将这一块的优先级提升上去了.所有这里可以不加括号
var old = {
test: function() {
s.test()
},
go: function() {
s.gogo()
}
}
return old;
}
//使用适配器之后就可以保持原来的调用方式了
var old = shipeiqi()
old.test()
old.go()
网友评论