亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

JavaScript多態(tài)與適配器模式思考

binta / 2177人閱讀

摘要:下面是我仿照適配器模式改進(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

相關(guān)文章

  • 學(xué)習(xí)設(shè)計模式前需要知道的事情

    摘要:為什么要學(xué)習(xí)設(shè)計模式做事情之前問個為什么總是好的。設(shè)計模式的使用方法關(guān)于使用方式,像我這種初學(xué)者最容易犯的錯誤就是生搬硬套,但是模仿本來也是學(xué)習(xí)的一個過程,最重要的事情是在模仿中要學(xué)會思考。 為什么要學(xué)習(xí)設(shè)計模式? 做事情之前問個為什么總是好的。關(guān)于設(shè)計模式的好壞,我在知乎上也看過一些討論,有知友對其提出過一些疑問,里面有一些關(guān)于設(shè)計模式的觀點: 設(shè)計模式有何不妥,所謂的荼毒體現(xiàn)在哪...

    kviccn 評論0 收藏0
  • PHP面向?qū)ο笤O(shè)計的五大原則

    摘要:面向?qū)ο笤O(shè)計的五大原則單一職責(zé)原則接口隔離原則開放封閉原則替換原則依賴倒置原則。主要是針對繼承的設(shè)計原則,繼承與派生多態(tài)是的主要特性。 面向?qū)ο笤O(shè)計的五大原則:單一職責(zé)原則、接口隔離原則、開放-封閉原則、替換原則、依賴倒置原則。這些原則主要是由Robert C.Martin在《敏捷軟件開發(fā)——原則、方法、與實踐》一書中總結(jié)出來,這五大原則也是23種設(shè)計模式的基礎(chǔ)。 單一職責(zé)原則 Sin...

    adam1q84 評論0 收藏0
  • 更好理解的面向?qū)ο蟮?em>Javascript 1 —— 動態(tài)類型和多態(tài)

    摘要:動態(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)該書對這方面的知識點介紹的很易于理解,因此...

    shusen 評論0 收藏0
  • JavaScript 配器模式

    摘要:適配器模式舊接口格式和使用者不兼容的情況下需要加一個適配轉(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...

    baihe 評論0 收藏0
  • 阿里云前端周刊 - 第 15 期

    摘要:推薦為什么我們選擇本文是工程師記述在前端技術(shù)選型時選用的考慮過程。能夠保證較好的類型覆蓋,但是其對于多態(tài)性的支持并不是很好,并且的社區(qū)也相對活躍。引擎就是為解決這一問題而生,在中也是采用該引擎來解析。 推薦 1. 為什么我們選擇 TypeScript https://redditblog.com/2017/0... 本文是 Reddit 工程師 Niranjan Ramadas 記述在...

    stefanieliang 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<