跳到主要内容

适配器模式

适配器模式通过把一个类的接口变换成客户端所期待的另一种接口,可以解决不兼容的问题。例如耳机的圆孔插头可以通过转接头在 Type-C 接口上使用。

假设在项目里有一个封装的全局方法,这个方法在项目里大量使用了,现在有一个功能一致的新方法,需要去替换以前的全局方法。这个新方法接收的参数、调用方式都和旧方法不一样,如果要全部替换项目里的旧方法,工作量巨大。这时就可以使用适配器模式去重写旧方法的实现。

示例:

// 旧方法
function oldMethod(type, data, successCallback, errorCallback) {}

// 使用方式
oldMethod(
'type',
[1, 2, 3],
function (data) {},
function (err) {}
);

// 新方法
function NewMethod(a, b) {}
NewMethod.prototype.init = function () {};

// 使用方式
const instance = new NewMethod(1, 2);
instance.init();

可以看出,如果要用新方法去一个一个的全部替换很麻烦

  • 旧方法接收 4 个参数,直接调用即可
  • 新方法接收 2 个参数,需要生成实例去调用 init 方法

使用适配器:

funciton adapter(type, data, successCallback, errorCallback){
// 省略适配过程
const instance = new NewMethod(1, 2);
instance.init();
}

function oldMethod(type, data, successCallback, errorCallback) {
adapter(type, data, successCallback, errorCallback)
}
  • 直接重写旧方法的逻辑,从源头改写,项目里的使用方式不用变
  • 定义适配器方法,接收的参数和旧方法的参数一样
  • 在适配器方法中进行适配,使用新方法的方式完成替换