#我的21天#《JavaScript设计模式与开发实践》- D17(续)

前端之家收集整理的这篇文章主要介绍了#我的21天#《JavaScript设计模式与开发实践》- D17(续)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

JavaScript设计模式-适配器模式

适配器模式的作用时解决两个软件实体间的接口不兼容的问题。使用适配器模式之后,原本由于接口不兼容而不能工作的两个软件实体可以一起工作。

生活中的适配器

现实当中有许多适配器的例子,比如港式插头转换器、 笔记本电源适配器等。这些适配器存在的意义是兼容现有的设备,说白了,就是通过对现有的设备进行一层包裹,使得设备能够正常的使用。

适配器模式的运用

在第一章节讲解javascript的多态的时候,曾经举了一个地图渲染的例子,现在让我们来回顾一下这个例子:

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

上面的代码中,之所以renderMap(baiduMap)renderMap(googleMap)都能起作用是因为baiduMapgoogleMap都有相同的render方法,现在假如百度的地图渲染方法display,则我们为了能让以上代码继续正常运行就得通过适配器模式来增加一个adapter对象:

百度地图

这里我们就是通过实现一个适配器对象来让baiduMap这个对象的display方法能够继续在renderMap方法中被运行。也体现了我们适配器模式的作用,适配器模式的作用往往就是当我们要让一个旧的方法在新的系统中能被继续使用,这个时候我们就可以考虑通过使用适配器模式创建一个适配器对象,来让我们的新系统继续使用老的方法

小结

适配器模式是一种相对简单的模式,它起的就是对原有对象的一层包裹作用,在这里我们可能会将它和代理模式或者装饰者模式混为一谈,看起来他们都使用了包裹这个功能,但是区分他们具体是哪一种设计模式还是得通过意图来确定。

  • 对于适配器模式来说,它的包裹性一开始是未知的,往往是当我们在系统更新中为了兼容新的系统,对‘老的对象’做的一层封装。

  • 而对于装饰者模式来说,它的装饰包裹往往形成一条链,而且装饰者模式的意义就是在于给对象添加功能

  • 代理模式的包装往往只有一层,它的目的是为了实现当不方便或者不能直接访问原对象时,生成的一个代理对象浪提供对原对象的访问。

  • 外观模式是最容易和适配器模式混淆的,但是外观模式最显著的特点就死活它定义了一个新的接口。

猜你在找的JavaScript相关文章