这是书中最后一种设计模式。
mac book pro委实是一个很好的开发和装逼工具。但很多时候比如投屏,插移动硬盘你都得借助适配器来转接。你不用考虑拆开你的macbook,只要转接器就够了。
程序开发时经常也遇到这样的场景:当我们试图调用某个实体的接口时并不符合我们想要的规范,动别人的代码是不人道的,第二种就是写一个转接器。
比如这是我写基于koa开发一个类似egg的架构时:错误捕捉的中间件:
在前端,通常也会对请求对象做一定封装,比如返回根据errorCode调用弹框:
代码语言:javascript复制import axios from 'axios';
import {stringify} from 'qs';
import {BASE_URL} from '../constant';
import {Notice} from 'iview';
class Request {
get(url, option) {
return new Promise((resolve, reject) => {
axios.get(`${BASE_URL}${url}?${stringify(option)}`).then(res => {
resolve(res.data);
}, err => {
reject(err);
});
});
}
post(url, option = {}, userConfig={}) {
const {config={}, tost = false} = userConfig ;
return new Promise((resolve, reject) => {
axios.post(BASE_URL url, option, {
...config,
timeout:1000000//超时
}).then(res => {
const {data : {resultCode, resultMsg}} = res;
if (! resultCode) {
Notice.error({
title : '提示',
desc : resultMsg
});
}
if (tost && resultCode) {
Notice.success({
title: '提示',
desc: resultMsg
});
}
resolve(res.data);
}, err => {
reject(err);
});
});
}
}
export default Request;
适配器模式是一对相对简单的模式。
在系列文章提到的设计模式中,有一些模式跟适配器模式的结构非常相似,比如装饰者模式、代理模式。这几种模式都属于“包装模式”,都是由一个对象来包装另一个对象。区别它们的关键仍然是模式的意图。适配器模式主要用来解决两个已有接口之间不匹配的问题,它不考虑这些接口是怎样实现的,也不考虑它们将来可能会如何演化。适配器模式不需要改变已有的接口,就能够使它们协同作用。装饰者模式和代理模式也不会改变原有对象的接口,但装饰者模式的作用是为了给对象增加功能。