适配器模式(Adapter)是将一个类(对象)的接口(方法或属性)转换成客户希望的另外一个接口(方法或属性) 适配器模式使得原本由于接口不兼容而不能一起工作的那些类(对象)可以一起工作 生活中的接口转换器,多功能插板, 笔记本充电器等
- 使用一个已经存在的对象,但是其方法或接口不符合你的要求
- 创建一个可复用的对象,该对象可以与其他不相关或不可见的对象协同工作
- 使用已存在的一个或多个对象,但是不能进行继承已匹配它的接口
- 与代理模式的区别, 代理模式不改变原接口, 适配是原接口不符合规范
// 风格1代码
var a = {
test: function() {
console.log('test');
},
go: function() {
console.log('go');
},
run: function() {
console.log('run');
}
};
// 风格2代码
var b = function() {};
b.prototype.test = function() {
console.log('test');
};
b.prototype.go = function() {
console.log('go');
};
b.prototype.eat = function() {
console.log('eat');
};
// 适配器模式兼容两种风格的方法
var adapter = function() {
var nb = new b();
return {
test: function() {
nb.test();
},
go: function() {
nb.go();
},
run: function() {
a.run();
},
eat: function() {
nb.eat();
},
}
};
// 实例化适配器
var ad = new adapter();
// 调用
ad.test();
ad.go();
ad.run();
ad.eat();