理解设计模式(七)——适配器模式

适配器模式

理解设计模式(一)——简单工厂 理解设计模式(二)——工厂方法 理解设计模式(四)——建造者 理解设计模式(五)——原型模式 理解设计模式(六)——单例模式

提出问题

在开发过程中,我们经常要用到一系列的第三方库/API。这些第三方库所给定的接口格式可能不是我们想要的。为了接口格式的统一,我们需要修改一下这些接口。

但是,我们有时候没办法拿到第三方库/API的源代码(比如调用腾讯地图的API)。这时候我们就可以使用适配器模式来解决接口不统一的问题。

使用适配器解决

下面举一个例子:

假设我们调用了一个地图API,这个API返回了必要的地址信息,但是我们还希望它能同时返回当前的时间。

/*
* 第三方接口
* http://api.test.com/location
* @return {
* latitude: 30.1223
* longitude: 120.3456
* }
*/

/* 客户端使用
* @params
* config {
* latitude: Number,
* longitude: Number,
* currentTime: Number
* }
*/
function clientUse(config) {
// ...
}

// adapter封装
async function getTimeAndLocation() {
let result = await axios.get("http://api.test.com/location");
return {
...result,
currentTime: Date()
}
}
Author: LeoB_O
Link: https://leob-o.github.io/2019/06/05/AdapterPattern/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.