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

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

作者头像
zhaozhen
发布2021-07-15 10:47:11
3480
发布2021-07-15 10:47:11
举报
文章被收录于专栏:微瞰Java后端开发

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

定义与应用

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

经典名言

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

优点

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

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

缺点

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

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

代码实现

代码语言:javascript
复制
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。

例:

代码语言:javascript
复制
输入:coins = [1, 2, 5], amount = 11
输出:3 
解释:11 = 5 + 5 + 1
代码语言:javascript
复制
输入: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 删除

本文分享自 微瞰技术 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大话设计模式(三) - 适配器模式
    • 定义与应用
      • 经典名言
        • 优点
          • 缺点
            • 代码实现
              • 每日一道算法题
                • awosome
                相关产品与服务
                图片处理
                图片处理(Image Processing,IP)是由腾讯云数据万象提供的丰富的图片处理服务,广泛应用于腾讯内部各产品。支持对腾讯云对象存储 COS 或第三方源的图片进行处理,提供基础处理能力(图片裁剪、转格式、缩放、打水印等)、图片瘦身能力(Guetzli 压缩、AVIF 转码压缩)、盲水印版权保护能力,同时支持先进的图像 AI 功能(图像增强、图像标签、图像评分、图像修复、商品抠图等),满足多种业务场景下的图片处理需求。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档