設(shè)計(jì)模式之6適配器模式

定義

適配器模式(Adapter)是將一個(gè)類(lèi)(對(duì)象)的接口(方法或?qū)傩裕┺D(zhuǎn)換成客戶希望的另外一個(gè)接口(方法或?qū)傩裕?,適配器模式使得原本由于接口不兼容而不能一起工作的那些(對(duì)象)可以一起工作。

作用及注意事項(xiàng)

模式作用

  1. 使用一個(gè)已經(jīng)存在的對(duì)象,但其方法或接口不符合你的要求;
  2. 創(chuàng)建一個(gè)可復(fù)用的對(duì)象,該對(duì)象可以與其他不相關(guān)或者不可見(jiàn)的對(duì)象協(xié)同工作。
  3. 使用已經(jīng)存在的一個(gè)或多個(gè)對(duì)象,但是不能進(jìn)行繼承已匹配它的接口。

注意事項(xiàng):

與代理模式的區(qū)別,代理模式是不改變?cè)瓉?lái)的接口,適配器模式是原來(lái)的接口不符合規(guī)范。

實(shí)例

假如之前寫(xiě)好的代碼如下

var old = {
        test: function() {
          console.log(`我是舊的test`)
        },
        go: function() {
          console.log(`我是舊的go`)
        }

    }
   //調(diào)用
    old.test()
    old.go()

后來(lái)old對(duì)象被重構(gòu)了改為了如下代碼

function newFn() {
        this.test = function() {
            console.log(`我是新的test`)
        }
    }
    newFn.prototype.gogo = function() {
        console.log(`我是新的gogo`)
    }

為了不修改調(diào)用的方式可以通過(guò)一個(gè)適配器解決

    function shipeiqi() {
        var s = new newFn;// new 的時(shí)候后面的括號(hào)不是執(zhí)行的意思,是將這一塊的優(yōu)先級(jí)提升上去了.所有這里可以不加括號(hào)
        var old = {
            test: function() {
                s.test()
            },
            go: function() {
                s.gogo()
            }
        }
        return old;
    }

//使用適配器之后就可以保持原來(lái)的調(diào)用方式了
    var old = shipeiqi()
    old.test()
    old.go()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言:設(shè)計(jì)模式之結(jié)構(gòu)型模式軟件模式與具體的應(yīng)用領(lǐng)域無(wú)關(guān),也就是說(shuō)無(wú)論你從事的是移動(dòng)應(yīng)用開(kāi)發(fā)、桌面應(yīng)用開(kāi)發(fā)、Web ...
    markfork閱讀 2,564評(píng)論 4 13
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,533評(píng)論 19 139
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說(shuō)閱讀 12,332評(píng)論 6 13
  • 我的筆記本電腦的工作電壓是20V,而我國(guó)的家庭用電是220V,如何讓20V的筆記本電腦能夠在220V的電壓下工作?...
    justCode_閱讀 1,498評(píng)論 0 5
  • 六一是兒童們最快樂(lè)的一天,家長(zhǎng)們可以陪孩子一天,而我作為一個(gè)小學(xué)生,要參加六一的演出——全班合唱《盧溝謠》。 回憶...
    涵涵哲哲閱讀 379評(píng)論 0 0

友情鏈接更多精彩內(nèi)容