javascript设计模式-适配器模式

适配器模式可以用来在现有接口和不兼容的类之间进行适配。

适配器模式的特点

  1. 适配器可以被添加到现有代码来协调两个不同的接口。
  2. 现有接口对手头的工作不够直观或实用,可以使用适配器模式来简化或丰富接口。

适配器与门面模式的区别

适配器与门面模式都修改接口,区别在于怎么修改接口:

  • 门面模式只是简化接口,不提供额外的选择,有时需要做出假定
  • 适配器要把一个接口转化为另一个接口

示例

适配两个库

function prototypeToYUIAdapter() {
	return YAHOO.util.Dom.get(arguments);
}

function YUIToPrototypeAdapter(el) {
	return $.apply(window, el instanceof Array ? el : [el]);
}

调用方式不变实现方式发生变化。将原来的调用方式变成新接口可以接受的调用方式

渲染城市

function getCity(){
      let citys = [{
        name:'广州',
        id:1
      },{
        name:'深圳',
        id:2
      },{
        name:'中山',
        id:3
      },{
        name:'东莞',
        id:4
      }]
      return function () {
        return citys;
      };
    }
    
    function render(adress){
      console.log(JSON.stringify(adress));
    }
    // 新数据结构
    let city = {
      '广州':1,
      '深圳':2,
      '中山':3,
      '东莞':4
    }
    function adaptor(oldAdressFn){
      let newAdress = {};
      let oldAdress = oldAdressFn();
      oldAdress.forEach(item => {
        newAdress[item.name] = item.id
      });
      return newAdress;
    }

    render(adaptor(getCity()))

适配器模式的适用场合

适配器协调语法的差异,适配器适配的应该是类似的方法。
适配器主要用来解决,现有的两个接口不匹配的问题,适配器不需要改变已有的接口,就能使其协同作用。

适配器模式之利

  1. 适配器有助于避免大规模改写代码
    用一个新的接口对现有类的接口进行包装

适配器模式之弊

适配器模式会引入一批需要支持的新工具

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端御书房

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值