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)
都能起作用是因为baiduMap
和googleMap
都有相同的render
方法,现在假如百度的地图渲染方法为display
,则我们为了能让以上代码继续正常运行就得通过适配器模式来增加一个adapter
对象:
百度地图
这里我们就是通过实现一个适配器对象来让baiduMap
这个对象的display
方法能够继续在renderMap
方法中被运行。也体现了我们适配器模式的作用,适配器模式的作用往往就是当我们要让一个旧的方法在新的系统中能被继续使用,这个时候我们就可以考虑通过使用适配器模式创建一个适配器对象,来让我们的新系统继续使用老的方法。
小结
适配器模式是一种相对简单的模式,它起的就是对原有对象的一层包裹作用,在这里我们可能会将它和代理模式或者装饰者模式混为一谈,看起来他们都使用了包裹这个功能,但是区分他们具体是哪一种设计模式还是得通过意图来确定。