不多说先上一段代码(转载自《JavaScript设想形式与开辟实践》)
//谷歌舆图show要领
var googleMap = {
googlShow: function() {
console.log("谷歌舆图");
}
};
//百度舆图show要领
var baiduMap = {
baiduShow: function() {
console.log("百度舆图");
}
};
//衬着舆图函数
var renderMap=function(map){
if(map.show instanceof Function){
map.show();
}
};
renderMap(googleMap);//输出:最先衬着谷歌舆图
renderMap(baiduMap);//输出:最先衬着百度舆图
关于书中抛出的题目,假定每一个舆图API供应展现舆图的要领名都是show,在现实开辟中或许不会云云顺遂,书中作者提出的思绪是借助适配器形式来解决题目。下面是我模仿适配器形式革新的:
var googleMap = {
googlShow: function() {
console.log("谷歌舆图");
}
};
var baiduMap = {
baiduShow: function() {
console.log("百度舆图");
}
};
//适配器参数设置
var mapArg = {
"googleMap": googleMap.googlShow,
"baiduMap": baiduMap.baiduShow
};
//适配器舆图
var adaptMap = {
show: function(arg) {
for (var imap in mapArg) {
for (var fmap in arg) {
if (imap && fmap && mapArg[imap].name==fmap) {
return mapArg[imap]();
}
}
}
}
};
//只关注发出显现舆图而不关注具体用哪一种舆图
var renderMap = function(arg) {
adaptMap.show(arg);
};
//当增加了搜搜舆图,我们须要增加搜搜舆图的要领以及修正适配器舆图参数
//而不须要对renderMap函数举行修正
var sosoMap = {
sosoShow: function() {
console.log("搜搜舆图");
}
};
mapArg.sosoMap=sosoMap.sosoShow;
render(sosoMap);