专栏首页用户1096981的专栏大话设计模式(三) - 适配器模式

大话设计模式(三) - 适配器模式

大话设计模式(三) - 适配器模式

定义与应用

适配器在现实场景中其实有很多, 电源的适配器, USB串口桥接到Mac Pro 上到TYPE-c 接口上,在现实生活中几乎无处不在,同样的,在计算机程序中,为了适配不同架构的机器,兼容不同的浏览器厂商,通过增设适配器的写法,达到兼容的目的。

经典名言

没有什么程序是加一层抽象解决不了的,那么适配器就可以是这个抽象。

优点

适配器是由于架构,机器设备的不统一产生的产物,有以下优点。

  1. 让两个毫无关联的类or 实例运行。
  2. 提高类的复用,(因为都在同一个类下,提高类的复用 可以复用其方法)
  3. 灵活度提高。(由于类的定义更加松散了,可以任意适配)

缺点

上面说到了适配器是架构与机器设配没有统一标准造成的,由于太松散,往往会导致适配器过于庞大,适配器需要兼容各种各样的情形,会导致适配器代码难以维护。

过多地使用适配器,会让系统非常凌乱,不易整体进行把握。比如,明明看到调用的是 A 接口,其实内部被适配成了 B 接口的实现,一个系统如果太多出现这种情况,无异于一场灾难。因此如果不是很有必要,可以不使用适配器,而是直接对系统进行重构。

代码实现

var googleMap = {
        show:function(){
            console.log('开始渲染谷歌地图');
        }
    };

    var baiduMap = {
        display:function(){
            console.log('开始渲染百度地图');
        }
    };
// 百度地图的适配器 将百度地图的show方法适配到map show上
    var baiduMapAdapter = {
        show:function(){
            return baiduMap.display();
        }
    };

    var renderMap = function(map){
        if(map.show instanceof Function){
            map.show();
        }
    };
    
    renderMap(googleMap);  //输出:开始渲染谷歌地图
    renderMap(baiduMapAdapter);    //输出:开始渲染百度地图

每日一道算法题

给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。

例:

输入:coins = [1, 2, 5], amount = 11
输出:3 
解释:11 = 5 + 5 + 1
输入:coins = [2], amount = 3
输出:-1

tips: 动态规划 贪心算法

awosome

  1. 尤大从0开始教你写vue源码 https://www.bilibili.com/video/BV1my4y1m7sz
  2. 前端面试题汇总 https://github.com/lgwebdream/FE-Interview?utm_source=gold_browser_extension
  3. 实用的绘图工具 https://github.com/fabricjs/fabric.js(提供转json 转svg 转图片等基础功能,帮你快速实现一个类ps的图片编辑器)
文章分享自微信公众号:
微瞰技术

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

作者:夏天的恶
原始发表时间:2021-01-01
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 【大话设计模式】——适配器模式

    将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原来由于接口不兼容而不能一起工作的类可以一起工作。

    程序猿小亮
  • “大话”设计模式

    导语:设计模式是无数码农前人在实际的生产项目中经过不断的踩坑、爬坑、修坑的经历总结出来的经验教训,经过抽象之后表达成的概念。能够帮助后来的设计者避免重复同样的错...

    技术zhai
  • 【大话设计模式】——建造者模式

    Builder是一个抽象的建造者接口,为创建一个Product对象的各个部件指定的抽象接口。一般至少会有两个抽象方法,一个用来建造产品;一个是用来返回产品。

    程序猿小亮
  • 【大话设计模式】——工厂模式家族

    在工厂模式家族中最出名的是工厂三姐妹,根据抽象的程度不同分为简单工厂、工厂模式和抽象工厂模式。他们在我们平时的编程中会经常使用。所以我们应该详细地了解一下他们三...

    程序猿小亮
  • 【大话设计模式】—— 模板方法模式

      上一篇文章刚刚讲了【大话设计模式】—— 原型模式,原型模式主要是通过Clone()方法,创建新的对象,免去了初始化的过程。模板方法模式也特别会“偷工减料”,...

    全栈程序员站长
  • 大话设计模式(二)- 工厂模式

    简单工厂的适用场景: 简单、 可穷举的工厂实例。因为工厂的方法足够简单,而一个大型项目中往往需要我们进行大批量的拓展,此时简单工厂已经不符合软件的开闭原则,我们...

    zhaozhen
  • 设计模式之适配器模式适配器模式

    当我们的手机接口Type-A时,但是数据线只有Type-C的时候,就需要用转接口做适配,这种情况下就要增加一个适配器

    tanoak
  • 【设计模式-适配器模式】

    【导读】如果多样东西需要使用同一件物品,则需要进行适配,比如只有一个电源插口,但有多个需要用电的(有三相插头,有二相插头),此时就需要一个排查器进行适配,使三相...

    Liusy
  • 设计模式 | 适配器模式

    适配器模式(adapter), 模式定义: 将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作

    憧憬博客
  • 设计模式----适配器模式

    SuperHeroes
  • 设计模式--适配器模式

    多重继承,其中继承的目标接口部分达到适配目的,而继承被适配者类的部分达到通过调用被适配者类里的方法来实现目标接口的功能

    HUC思梦
  • 设计模式-适配器模式

    用户5927264
  • 设计模式~适配器模式

    适配器模式(Adapter Pattern)把一个类的接口变换成客户端期待的另一种接口,从而是原本因接口不匹配而无法一起工作的两个类能够一起工作。

    Vincent-yuan
  • 设计模式 ---适配器模式

    2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,这些源类不一定有一致的接口。

    用户3479834
  • 设计模式-适配器模式

    适配器模式:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

    Anymarvel
  • 设计模式——适配器模式

    设计模式——适配器模式

    Java架构师必看
  • 【设计模式】适配器模式

    在业务开发中,经常需要做不同接口的兼容,尤其是中台服务。中台需要把各个业务线的类型服务统一包装,再对外提供接口。

    Li_XiaoJin
  • 设计模式:适配器模式

    今天说一下适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间 感觉这是一个很好理解的模式,也是我们很常见的一个模式,...

    lpxxn
  • 设计模式 ——— 适配器模式

    tomas家的小拨浪鼓

扫码关注腾讯云开发者

领取腾讯云代金券