摘要:下面是我仿照適配器模式改進(jìn)的谷歌地圖百度地圖適配器參數(shù)配置適配器地圖只關(guān)注發(fā)出顯示地圖而不關(guān)注具體用哪種地圖當(dāng)增加了搜搜地圖,我們需要添加搜搜地圖的方法以及修改適配器地圖參數(shù)而不需要對函數(shù)進(jìn)行修改搜搜地圖
不多說先上一段代碼(轉(zhuǎn)載自《JavaScript設(shè)計模式與開發(fā)實踐》)
//谷歌地圖show方法 var googleMap = { googlShow: function() { console.log("谷歌地圖"); } }; //百度地圖show方法 var baiduMap = { baiduShow: function() { console.log("百度地圖"); } }; //渲染地圖函數(shù) var renderMap=function(map){ if(map.show instanceof Function){ map.show(); } }; renderMap(googleMap);//輸出:開始渲染谷歌地圖 renderMap(baiduMap);//輸出:開始渲染百度地圖
對于書中拋出的問題,假設(shè)每個地圖API提供展示地圖的方法名都是show,在實際開發(fā)中也許不會如此順利,書中作者提出的思路是借助適配器模式來解決問題。下面是我仿照適配器模式改進(jìn)的:
var googleMap = { googlShow: function() { console.log("谷歌地圖"); } }; var baiduMap = { baiduShow: function() { console.log("百度地圖"); } }; //適配器參數(shù)配置 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](); } } } } }; //只關(guān)注發(fā)出顯示地圖而不關(guān)注具體用哪種地圖 var renderMap = function(arg) { adaptMap.show(arg); }; //當(dāng)增加了搜搜地圖,我們需要添加搜搜地圖的方法以及修改適配器地圖參數(shù) //而不需要對renderMap函數(shù)進(jìn)行修改 var sosoMap = { sosoShow: function() { console.log("搜搜地圖"); } }; mapArg.sosoMap=sosoMap.sosoShow; render(sosoMap);
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/80946.html
摘要:為什么要學(xué)習(xí)設(shè)計模式做事情之前問個為什么總是好的。設(shè)計模式的使用方法關(guān)于使用方式,像我這種初學(xué)者最容易犯的錯誤就是生搬硬套,但是模仿本來也是學(xué)習(xí)的一個過程,最重要的事情是在模仿中要學(xué)會思考。 為什么要學(xué)習(xí)設(shè)計模式? 做事情之前問個為什么總是好的。關(guān)于設(shè)計模式的好壞,我在知乎上也看過一些討論,有知友對其提出過一些疑問,里面有一些關(guān)于設(shè)計模式的觀點: 設(shè)計模式有何不妥,所謂的荼毒體現(xiàn)在哪...
摘要:面向?qū)ο笤O(shè)計的五大原則單一職責(zé)原則接口隔離原則開放封閉原則替換原則依賴倒置原則。主要是針對繼承的設(shè)計原則,繼承與派生多態(tài)是的主要特性。 面向?qū)ο笤O(shè)計的五大原則:單一職責(zé)原則、接口隔離原則、開放-封閉原則、替換原則、依賴倒置原則。這些原則主要是由Robert C.Martin在《敏捷軟件開發(fā)——原則、方法、與實踐》一書中總結(jié)出來,這五大原則也是23種設(shè)計模式的基礎(chǔ)。 單一職責(zé)原則 Sin...
摘要:動態(tài)類型語言和鴨子類型編程語言按照數(shù)據(jù)類型大體可分為靜態(tài)類型語言和動態(tài)類型語言。鴨子類型的概念至關(guān)重要,比如一個對象有了屬性,也可以依照下標(biāo)來存取屬性,這個對象就可以被當(dāng)做數(shù)組來使用。 前言 曾經(jīng)對Javascript的面向?qū)ο笙嚓P(guān)知識也有過了解,從各種博客、書籍上也學(xué)到了很多。但是最近在看《Javascript設(shè)計模式與開發(fā)實戰(zhàn)》這本書時發(fā)現(xiàn)該書對這方面的知識點介紹的很易于理解,因此...
摘要:適配器模式舊接口格式和使用者不兼容的情況下需要加一個適配轉(zhuǎn)換接口,無需要改變舊的接口格式電源適配器實現(xiàn)步驟針對類創(chuàng)建一個轉(zhuǎn)換類類中的初始化中創(chuàng)建一個實例利用類的多態(tài)特性覆蓋類的方法代碼實現(xiàn)語法初始化實例覆蓋函數(shù)式覆蓋 showImg(https://segmentfault.com/img/remote/1460000019829430?w=640&h=413); 1. JavaScr...
摘要:推薦為什么我們選擇本文是工程師記述在前端技術(shù)選型時選用的考慮過程。能夠保證較好的類型覆蓋,但是其對于多態(tài)性的支持并不是很好,并且的社區(qū)也相對活躍。引擎就是為解決這一問題而生,在中也是采用該引擎來解析。 推薦 1. 為什么我們選擇 TypeScript https://redditblog.com/2017/0... 本文是 Reddit 工程師 Niranjan Ramadas 記述在...
閱讀 2371·2023-04-25 23:15
閱讀 2028·2021-11-22 09:34
閱讀 1611·2021-11-15 11:39
閱讀 1024·2021-11-15 11:37
閱讀 2216·2021-10-14 09:43
閱讀 3561·2021-09-27 13:59
閱讀 1568·2019-08-30 15:43
閱讀 3562·2019-08-30 15:43