工作生活

结构模式类型:适配器模式

2019-07-02  本文已影响0人  Ricoywang

Adapter,将一个类(对象)的接口(方法或者属性)转化为另一个接口,以满足用户需求,使类(对象)之间接口的不兼容问题通过适配器得以解决

适用场景

示例

我们想让Duck 和Turkey 的方法接口一致方便新功能使用,由于是老的代码我们不清楚直接修改是否会造成老代码无法使用,于是我们通过TurkeyAdapter做兼容

Class Duck {
  fly () {
  }
  quack () {
  }
}
Class Turkey {
  fly () {
  }
  gobble () {
  }
}
// 适配器
Class TurkeyAdapter {
  constructor (turkey) {
    this.turkey = turkey
  }
  fly () {
    this.turkey.fly()
  }
  quack () { // 原本只有gobble 方法,通过适配器改造为quack方法
    this.turkey.gobble()
  }
}
var duck = new Duck();
var turkey = new Turkey();
var turkeyAdapter = new TurkeyAdapter(turkey);

//原有的鸭子行为
duck.fly();
duck.quack();

//原有的火鸡行为
turkey.fly();
turkey.gobble();

//适配器火鸡的行为(火鸡调用鸭子的方法名称)
turkeyAdapter.fly();
turkeyAdapter.quack();

适配器模式也经常用于日常的数据处理上,比如把一个有序的数组转化成我们需要的对象格式:

const arr = ['Javascript', 'book', '前端编程语言', '8月1日']
function arr2objAdapter(arr) {    // 转化成我们需要的数据结构
  return {
    name: arr[0],
    type: arr[1],
    title: arr[2],
    time: arr[3]
  }
}

const adapterData = arr2objAdapter(arr)
上一篇 下一篇

猜你喜欢

热点阅读