首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一文读懂适配器模式

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

适配器模式的特点

适配器可以被添加到现有代码来协调两个不同的接口。

现有接口对手头的工作不够直观或实用,可以使用适配器模式来简化或丰富接口。

适配器与门面模式的区别

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

门面模式只是简化接口,不提供额外的选择,有时需要做出假定

适配器要把一个接口转化为另一个接口

示例

适配两个库

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()))

适配器模式的适用场合

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

适配器模式之利

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

适配器模式之弊

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

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OGLE1nIH23Z3EHp-IHd72Z2Q0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券