# 设计模式——适配器模式
提到适配器,我们想到的可能是电源适配器。一些电子产品的插座是三孔的,但是如果没有三孔插座,那么我们就需要使用转换器,使用两孔插座通过转换器来给三孔电子产品充电,这个转换器就是适配器。在生活中,我们经常会碰到这种由于接口不同需要通过转换来实现的情况,在实际的代码开发中,我们经常也会遇到接口不同,需要进行转换的过程。这个转换的过程就是适配。这种设计模式就是适配器设计模式。
# 适配器模式定义:
将一个类的接口转换成另外一个接口,以满足用户需求,解决接口不一样而产生的问题。看具体的代码:
function getInfo(){
//假设result为请求后台得到的数据,数组形式
var result = ['henry',24,'teacher'];
console.log('名字是'+result[0]+'年龄是'+result[1]+'职业是'+result[2])
}
上面的代码中,定义了一个用于获取个人信息的函数,个人信息的获取为通过后台接口返回到result
中。现在返回的数据为数组形式。我们后面所有的操作都是按照数组来进行的,比如获取姓名result[0]
。获取年龄为result[1]
。但是,假如后端接口发生变化了,不再返回数组形式了(这在实际的开发中可能非常常见)。而实返回一个对象了。那么我们后面所有的使用数组的操作就都是错误的了,这样的话所有涉及到数据的都需要进行修改,如果后续代码非常多,那么修改起来就非常麻烦了。这时候,我们可能考虑变通一下,将返回的对象,转换成我们需要的数组即可。代码如下:
function fn2(){
//假设result2为请求后台得到的数据,对象形式
var result2 = {
name:'henry',
age:24,
job:'teacher'
}
//将对象转化成数组
function objToArray(obj){
var arr = [];
for(var key in obj){
arr.push(obj[key])
}
return arr;
}
var result = objToArray(result2)
console.log('名字是'+result[0]+'年龄是'+result[1]+'职业是'+result[2])
}
上面的代码中,result2
为后台请求的接口,数据类型是对象。但是我们之前都是按照数组处理的,因此我们需要将对象转换成数组,函数objToArray
就是用来转换的函数。这样的话,我们就不需要去修改后面的代码,这个转换的过程就是适配过程。objToArray
就是适配函数。这就是适配器设计模式。
# 适配器设计模式总结:
适配器设计模式其实就是把一些不适合我们当前使用的接口,通过适配以后,转换成能够被我们使用的接口。最常见的就是接口的转换