//谷歌地圖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);//
對于書中拋出的問題,假設每個地圖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);
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com