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

資訊專欄INFORMATION COLUMN

轉(zhuǎn)換插座之適配器模式

MudOnTire / 1142人閱讀

摘要:適配器模式之?dāng)?shù)據(jù)格式轉(zhuǎn)換適配器模式不僅可以起到適配接口名的作用,它另外還有一個(gè)功能就是能統(tǒng)一不同格式的作用。我們的目的就是在程序中,不要出現(xiàn)適配器模式,但考慮到實(shí)際,這也是不可能的,所以盡量將代碼設(shè)計(jì)符合規(guī)范是非常必要的。

這個(gè)模式應(yīng)該算是除了單例模式以外最簡(jiǎn)單的一個(gè)模式,沒(méi)有多余的類,這個(gè)模式只有一個(gè)職責(zé),就是轉(zhuǎn)換的你接口參數(shù),歸一化接口調(diào)用函數(shù),同意參數(shù)格式。
說(shuō)人話~
其實(shí)就是,將不同東西,加上同一個(gè)包裝。
而這個(gè)模式,我們應(yīng)該早熟悉了。
在命令模式的中,有這樣一段代碼:

//封裝命令
var MoveUp = function(exer){
    this.exer = exer;
}
MoveUp.prototype.do = function(){
    this.exer.moveUP();
}
var MoveDown = function(exer){
    this.exer = exer;
}
MoveDown.prototype.do = function(){
    this.exer.moveDown();
}
var MoveLeft = function(exer){
    this.exer = exer;
}
MoveLeft.prototype.do = function(){
    this.exer.moveLeft();
}
var MoveRight = function(exer){
    this.exer = exer;
}

在不同的命令中,我們使用類將原本接口不一致的命令適配為同一個(gè)接口的函數(shù)。而適配器的精華就體現(xiàn)在這里,要知道,他和代理模式一樣,只起到一個(gè)中間層的作用,實(shí)質(zhì)上并不會(huì)改變一個(gè)整體架構(gòu)。 而我們大費(fèi)周章的將他列為一個(gè)模式是很有代理的。因?yàn)樵趯?shí)際開(kāi)發(fā)當(dāng)中,我們必定會(huì)使用到一些第三方的API,有時(shí)候leader高瞻遠(yuǎn)矚往往會(huì)使用多個(gè)相同功能的 不同提供商的 API(是不是傻啊~). 現(xiàn)實(shí)是,這些提供商的API要么名字不一樣,要么參數(shù)不統(tǒng)一,但是必須要用,那就可以使用適配器模式來(lái)進(jìn)行轉(zhuǎn)化。
比如一個(gè)調(diào) "評(píng)論模塊" 的API
多說(shuō)里面是. DS.comment().
Disqus的是. DQ.commentary().
(上面是我意淫的接口)
首先,leader的要求是,一開(kāi)始使用多說(shuō)的評(píng)論。(鬼信啊,萬(wàn)一以后你又用Disqus,那我還怎么過(guò)年)
我們這里可以使用適配器模式給自己留一條后路

var _disqus = {  //disqus評(píng)論插件
    comment(){
        disqus.commentary();
    }
}
var _DS = {  //多說(shuō)評(píng)論插件
    comment(){
        DS.comment();
    }
}
var command = function(comment){
    comment.comment();
}
//使用多說(shuō)的評(píng)論
command(_DS);

以后萬(wàn)一leader不爽多說(shuō)了,想換,你也是輕而易舉的。

適配器模式之?dāng)?shù)據(jù)格式轉(zhuǎn)換

適配器模式不僅可以起到適配接口名的作用,它另外還有一個(gè)功能就是能統(tǒng)一不同格式的作用。
在某個(gè)接口中,使用的數(shù)據(jù)格式是這樣的。

[{
    name:"sam",
    year:12,
    gender:"male"
}]

但是由于后臺(tái)SB的不準(zhǔn)守文檔,使用了這樣的格式。

{
    sam: {
        year: 12,
        gender: "male"
    },
    ...
}

但是,你的js已經(jīng)按照文檔的要求完成了任務(wù)標(biāo)準(zhǔn),而此時(shí),后臺(tái)已經(jīng)把后臺(tái)接口寫(xiě)好了,估計(jì)現(xiàn)在度假去了。沒(méi)辦法,只有改動(dòng)了,現(xiàn)在有兩種選擇,一種是直接破壞你原來(lái)寫(xiě)好的程序邏輯,還有一種是使用適配器模式直接改寫(xiě)。
我的話,我會(huì)選擇,適!配!器!模!式!
我們可以自定義一個(gè)格式轉(zhuǎn)化類

var json = {
    sam: {
        year: 12,
        gender: "male"
    },
    jimmy:{
        year:22,
        gender:"female"
    }
}
function adaption(para){
    var keys = Object.keys(para),
        obj = [];
    for(var i = 0,temp,key; key = keys[i++];){
        temp = para[key];
        temp.name = key;
        obj.push(temp);
    }
    return obj;
}
console.log(adaption(json));

然后在參數(shù)傳遞過(guò)程中,直接使用adaption以后的數(shù)據(jù)就可以了。

大話適配器模式

由于適配器是作為彌補(bǔ)的一種手段,而不是作為一開(kāi)始代碼設(shè)計(jì)的原則,所以,大家在代碼構(gòu)思的時(shí)候盡量將接口實(shí)現(xiàn)統(tǒng)一這才是最棒的模式。 我們的目的就是在程序中,不要出現(xiàn)適配器模式,但考慮到實(shí)際,這也是不可能的,所以盡量將代碼設(shè)計(jì)符合規(guī)范是非常必要的。
ending~

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

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

相關(guān)文章

  • 慕課網(wǎng)_《模式的秘密配器模式》學(xué)習(xí)總結(jié)

    摘要:時(shí)間年月日星期二說(shuō)明本文部分內(nèi)容均來(lái)自慕課網(wǎng)。慕課網(wǎng)教學(xué)源碼學(xué)習(xí)源碼第一章適配器模式的簡(jiǎn)介簡(jiǎn)介生活中的適配器翻譯軟件插座適配器適配器模式定義適配器模式講將一個(gè)類的接口,轉(zhuǎn)換成客戶期望的另外一個(gè)接口。 時(shí)間:2017年08月29日星期二說(shuō)明:本文部分內(nèi)容均來(lái)自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)源碼:https://github.com/zccodere/s.....

    andong777 評(píng)論0 收藏0
  • 設(shè)計(jì)模式配器模式

    摘要:定義和類型定義將一個(gè)類的接口轉(zhuǎn)換成客戶期望的另一個(gè)接口,適配器模式讓那些不兼容的類可以一起工作。類型結(jié)構(gòu)型類適配器模式類適配器模式使用繼承的方式去實(shí)現(xiàn)接口適配。它是適配器模式的核心。 0x01.定義和類型 定義:將一個(gè)類的接口轉(zhuǎn)換成客戶期望的另一個(gè)接口,適配器模式讓那些不兼容的類可以一起工作。 類型:結(jié)構(gòu)型 a.類適配器模式 類適配器模式:使用繼承的方式去實(shí)現(xiàn)接口適配。 UML:...

    booster 評(píng)論0 收藏0
  • 一天一個(gè)設(shè)計(jì)模式JS實(shí)現(xiàn)——配器模式

    摘要:本文參考于設(shè)計(jì)模式課程設(shè)計(jì)模式之適配器模式設(shè)計(jì)模式是一套被反復(fù)使用的多數(shù)人知曉的經(jīng)過(guò)分類編目的代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。第一個(gè)設(shè)計(jì)模式是適配器模式。總的來(lái)說(shuō)適配器就是的模式,與修飾模式直接無(wú)感使用不同,適配器模式使用對(duì)象變?yōu)椤? 本文參考于:設(shè)計(jì)模式課程設(shè)計(jì)模式之適配器模式 設(shè)計(jì)模式是一套被反復(fù)使用的、多數(shù)人知曉的、經(jīng)過(guò)分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了重用代碼、讓代碼更容易被...

    Aceyclee 評(píng)論0 收藏0
  • 開(kāi)發(fā)路(設(shè)計(jì)模式七:配器模式

    摘要:你眼中的適配器是什么樣子的呢在設(shè)計(jì)模式中也有模式叫適配器模式,一起來(lái)看看吧。定義適配器模式將一個(gè)類的接口,轉(zhuǎn)換成客戶期待的另一個(gè)接口。 你眼中的適配器是什么樣子的呢?在設(shè)計(jì)模式中也有模式叫適配器模式,一起來(lái)看看吧。 適配器是什么這不需要作者我多解釋把,打個(gè)比方,在國(guó)內(nèi)用的是220V的電器,但國(guó)外有些國(guó)家是110V甚至240V的也有等等,國(guó)內(nèi)的充電線就不能直接插國(guó)外的插...

    solocoder 評(píng)論0 收藏0
  • 配器設(shè)計(jì)模式(應(yīng)用于活動(dòng)業(yè)務(wù))

    摘要:適配器的適用場(chǎng)景代碼的復(fù)用性強(qiáng)。客戶端使用目標(biāo)接口,與和目標(biāo)接口一致的對(duì)象合作。被適配者一個(gè)現(xiàn)存需要適配的接口。適配器負(fù)責(zé)將的接口轉(zhuǎn)換為的接口。適配器是一個(gè)具體的類,這是該模式的核心。適配器分為類適配器和對(duì)象適配器兩種,下面將詳細(xì)講述。 適配器的適用場(chǎng)景 代碼的復(fù)用性強(qiáng)。 我們一直在使用適配器,如果 只有USB連接頭,無(wú)法將手機(jī)插到標(biāo)準(zhǔn)的插座上面充電 ,這時(shí)需要的一個(gè)適配器,一端接U...

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

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

0條評(píng)論

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