前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >适配器模式

适配器模式

作者头像
一粒小麦
发布2019-11-19 17:53:39
2790
发布2019-11-19 17:53:39
举报
文章被收录于专栏:一Li小麦一Li小麦

这是书中最后一种设计模式。

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;

适配器模式是一对相对简单的模式。

在系列文章提到的设计模式中,有一些模式跟适配器模式的结构非常相似,比如装饰者模式、代理模式。这几种模式都属于“包装模式”,都是由一个对象来包装另一个对象。区别它们的关键仍然是模式的意图。适配器模式主要用来解决两个已有接口之间不匹配的问题,它不考虑这些接口是怎样实现的,也不考虑它们将来可能会如何演化。适配器模式不需要改变已有的接口,就能够使它们协同作用。装饰者模式和代理模式也不会改变原有对象的接口,但装饰者模式的作用是为了给对象增加功能。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一Li小麦 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档