成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

binta / 2144人閱讀

摘要:下面是我仿照適配器模式改進(jìn)的谷歌地圖百度地圖適配器參數(shù)配置適配器地圖只關(guān)注發(fā)出顯示地圖而不關(guān)注具體用哪種地圖當(dāng)增加了搜搜地圖,我們需要添加搜搜地圖的方法以及修改適配器地圖參數(shù)而不需要對(duì)函數(shù)進(jìn)行修改搜搜地圖

不多說(shuō)先上一段代碼(轉(zhuǎn)載自《JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐》)

        //谷歌地圖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);//輸出:開(kāi)始渲染谷歌地圖
       renderMap(baiduMap);//輸出:開(kāi)始渲染百度地圖

對(duì)于書中拋出的問(wèn)題,假設(shè)每個(gè)地圖API提供展示地圖的方法名都是show,在實(shí)際開(kāi)發(fā)中也許不會(huì)如此順利,書中作者提出的思路是借助適配器模式來(lái)解決問(wèn)題。下面是我仿照適配器模式改進(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ù)
        //而不需要對(duì)renderMap函數(shù)進(jìn)行修改
        var sosoMap = {
            sosoShow: function() {
                console.log("搜搜地圖");
            }
        };
        mapArg.sosoMap=sosoMap.sosoShow; 
        render(sosoMap);

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/80946.html

相關(guān)文章

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

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

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

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

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

    摘要:動(dòng)態(tài)類型語(yǔ)言和鴨子類型編程語(yǔ)言按照數(shù)據(jù)類型大體可分為靜態(tài)類型語(yǔ)言和動(dòng)態(tài)類型語(yǔ)言。鴨子類型的概念至關(guān)重要,比如一個(gè)對(duì)象有了屬性,也可以依照下標(biāo)來(lái)存取屬性,這個(gè)對(duì)象就可以被當(dāng)做數(shù)組來(lái)使用。 前言 曾經(jīng)對(duì)Javascript的面向?qū)ο笙嚓P(guān)知識(shí)也有過(guò)了解,從各種博客、書籍上也學(xué)到了很多。但是最近在看《Javascript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)戰(zhàn)》這本書時(shí)發(fā)現(xiàn)該書對(duì)這方面的知識(shí)點(diǎn)介紹的很易于理解,因此...

    shusen 評(píng)論0 收藏0
  • JavaScript 配器模式

    摘要:適配器模式舊接口格式和使用者不兼容的情況下需要加一個(gè)適配轉(zhuǎn)換接口,無(wú)需要改變舊的接口格式電源適配器實(shí)現(xiàn)步驟針對(duì)類創(chuàng)建一個(gè)轉(zhuǎn)換類類中的初始化中創(chuàng)建一個(gè)實(shí)例利用類的多態(tài)特性覆蓋類的方法代碼實(shí)現(xiàn)語(yǔ)法初始化實(shí)例覆蓋函數(shù)式覆蓋 showImg(https://segmentfault.com/img/remote/1460000019829430?w=640&h=413); 1. JavaScr...

    baihe 評(píng)論0 收藏0
  • 阿里云前端周刊 - 第 15 期

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

    stefanieliang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<