JavaScript设计模式-适配器模式

1,512 阅读1分钟

定义

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()了,这个接口是把setget的功能合二为一了:

// 既可以像这样调用,取得opacity值
$('.elem').css('opacity');

// 也可以像这样,设置opacity值
$('.elem').css({'opacity': '0.9'});

适用场景

适配器不会去改变实现层,那不属于它的职责范围,它干涉了抽象的过程。外部接口的适配能够让同一个方法适用于多种系统。

如果内部的实现出现了问题,需要动手术解决的话,那就不应该使用适配器了,因为那只是治标不治本的方法,反而会增加代码的复杂度。对实现进行全面优化的带来的是真正的改善。而如果实现层的问题不大,要解决一部分适配问题的话,适配器模式就是很好的选择了。