一、适配器模式:是为了解决软件实体间的接口不兼容的问题。适配器的别名是包装器(wrapper);
二、首先,假设我们已经有如下代码:
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方法。但如果有一家地图的显示地图的方法不叫show呢?
我们可以利用适配器模式来处理,如下:
var googleMap = {
show: function(){
console.log( '开始渲染谷歌地图' );
}
};
var baiduMap = {
show: function(){
console.log( '开始渲染百度地图' );
}
};
var tiandituMap = {
display: function(){
console.log( '开始渲染天地图地图' );
}
};
//为了统一show方法,为天地图添加适配器
var tiandituMapAdapter = {
show: function(){
return tiandituMap.display();
}
};
var renderMap = function( map ){
if( map.show instanceof Function ){
map.show();
}
}
renderMap( googleMap );
renderMap( baiduMap );
renderMap( tiandituMapAdapter );