美文网首页
JavaScript 设计模式(中)——14.适配器模式

JavaScript 设计模式(中)——14.适配器模式

作者: Haleng | 来源:发表于2019-12-22 18:00 被阅读0次

    14 适配器模式

    适配器模式的作用是解决两个软件实体间的接口不兼容的问题;

    14.1 适配器模式实例

    在之前的地图的例子中,使用多态的思想,实现同一个操作在不同的对象产生不同的结果,如下代码:

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

    上面代码运行的关键在于 googleMap 和 baiduMap 提供了一致的 show 方法,若第三方接口方法不在约定中(如不是 show 方法),那么需要增加一个适配函数来解决问题,如下:

    var googleMap = {
      show: function(){ console.log( '开始渲染谷歌地图' ); }
    };
    var baiduMap = {
      display: function(){ console.log( '开始渲染百度地图' ); }
    };
    var baiduMapAdapter = {
      show: function(){ return baiduMap.display();}
    };
    renderMap( googleMap ); // 输出:开始渲染谷歌地图
    renderMap( baiduMapAdapter ); // 输出:开始渲染百度地图
    

    14.2 适配器模式小结

    适配器模式是一对相对简单的模式,在提到的设计模式中,有一些模式跟适配器模式的结构非常相似,比如装饰者模式、代理模式和外观模式。这几种模式都属于“包装模式”,都是由一个对象来包装另一个对象,它们的关键区别是模式的意图;

    下面对这几种 包装模式 进行介绍:

    • 适配器模式主要用来解决两个已有接口之间不匹配的问题,它不考虑这些接口是怎样实现的,也不考虑它们将来可能会如何演化。适配器模式不需要改变已有的接口,就能够使它们协同作用。
    • 装饰者模式和代理模式也不会改变原有对象的接口,但装饰者模式的作用是为了给对象增加功能。装饰者模式常常形成一条长的装饰链,而适配器模式通常只包装一次。代理模式是为了控制对对象的访问,通常也只包装一次。
    • 外观模式的作用和适配器比较相似,可以把外观模式看成一组对象的适配器,但外观模式最显著的特点是定义了一个新的接口。

    系列链接

    1. JavaScript 设计模式(上)——基础知识
    2. JavaScript 设计模式(中)——1.单例模式
    3. JavaScript 设计模式(中)——2.策略模式
    4. JavaScript 设计模式(中)——3.代理模式
    5. JavaScript 设计模式(中)——4.迭代器模式
    6. JavaScript 设计模式(中)——5.发布订阅模式
    7. JavaScript 设计模式(中)——6.命令模式
    8. JavaScript 设计模式(中)——7.组合模式
    9. JavaScript 设计模式(中)——8.模板方法模式
    10. JavaScript 设计模式(中)——9.享元模式
    11. JavaScript 设计模式(中)——10.职责链模式
    12. JavaScript 设计模式(中)——11. 中介者模式
    13. JavaScript 设计模式(中)——12. 装饰者模式
    14. JavaScript 设计模式(中)——13.状态模式
    15. JavaScript 设计模式(中)——14.适配器模式
    16. JavaScript 设计模式(下)——设计原则
    17. JavaScript 设计模式练习代码

    本文主要参考了《JavaScript设计模式和开发实践》一书

    相关文章

      网友评论

          本文标题:JavaScript 设计模式(中)——14.适配器模式

          本文链接:https://www.haomeiwen.com/subject/hgionctx.html