定义:
Adapter,将一个类(对象)的接口(方法或者属性)转化为另一个接口,以满足用户需求,使类(对象)之间接口的不兼容问题通过适配器得以解决
生活:
现实中我们一个手机充电线 可以用一个转接头去给各种手机充电
准备
1)需要适配的类Adaptee
2)适配器Adapter
3)目标接口Target
var obj = {
name: "你我贷",
job: "前端"
}
function Person() {
}
var person = new Person()
person.showInfo = function (name,job) {
console.log(name + ' is ' + name + ' and job is ' + job);
}
person.showInfo(obj.name,obj.job);
//你我贷 is 你我贷 and job is 前端
jQuery中的适配器
上面提到的适配器写法只是表现了适配器是一个什么样的东西,但实际项目中不会出现这样的代码。我们以jQuery中的一个API为例,说说实际应用中的适配器模式的使用方法。
在jQuery样式相关的API中,最方便使用的就是css()
了,这个接口是把set
和get
的功能合二为一了:
// 既可以像这样调用,取得opacity值
$('.elem').css('opacity');
// 也可以像这样,设置opacity值
$('.elem').css({'opacity': '0.9'});
适用场景
适配器不会去改变实现层,那不属于它的职责范围,它干涉了抽象的过程。外部接口的适配能够让同一个方法适用于多种系统。
如果内部的实现出现了问题,需要动手术解决的话,那就不应该使用适配器了,因为那只是治标不治本的方法,反而会增加代码的复杂度。对实现进行全面优化的带来的是真正的改善。而如果实现层的问题不大,要解决一部分适配问题的话,适配器模式就是很好的选择了。