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

資訊專(zhuān)欄INFORMATION COLUMN

javascript設(shè)計(jì)模式--策略模式

李文鵬 / 3261人閱讀

摘要:策略模式總結(jié)什么是策略模式策略模式的定義是定義一系列的算法,把他們獨(dú)立封裝起來(lái),并且可以相互替換。策略模式的使用如果策略模式僅僅是用來(lái)封裝算法,可能有點(diǎn)小才大用了。原文鏈接設(shè)計(jì)模式策略模式上一篇設(shè)計(jì)模式單例模式

javascript策略模式總結(jié)

1.什么是策略模式?

策略模式的定義是:定義一系列的算法,把他們獨(dú)立封裝起來(lái),并且可以相互替換。

例如我們需要寫(xiě)一段代碼來(lái)計(jì)算員工的獎(jiǎng)金。當(dāng)績(jī)效為a時(shí),獎(jiǎng)金為工資的5倍,績(jī)效為b時(shí),獎(jiǎng)金為工資的3倍,績(jī)效為c時(shí),獎(jiǎng)金為工資的1.5倍:

var strategy = {
    "a":function(salary){
        return salary*5;
    },
    "b":function(salary){
        return salary*3;
    },
    "c":function(salary){
        return salary*1.5;
    }            
};

var calculate = function(levle,salary){
    return strategy[levle](salary);
}

//a級(jí)獎(jiǎng)金
calculate("a",15000);

上面例子中,各種績(jī)效對(duì)應(yīng)著不同的算法,因此把他們封裝在strategy里。calculate負(fù)責(zé)接受請(qǐng)求,然后把請(qǐng)求委托給指定的
策略類(lèi)。這種實(shí)現(xiàn)方式,就是策略模式。

2.策略模式的優(yōu)勢(shì)

看回上面的例子,具體的算法和接受請(qǐng)求的函數(shù)是相互獨(dú)立的,當(dāng)我們需要添加新的等級(jí)d時(shí),只需要在strategy中添加相應(yīng)的算法就可以了,不需要修改到calculate,十分的靈活。

3.策略模式的使用

如果策略模式僅僅是用來(lái)封裝算法,可能有點(diǎn)小才大用了。在實(shí)際開(kāi)發(fā)中,可以用來(lái)封裝一系列的業(yè)務(wù)規(guī)則,并且靈活的調(diào)用它們。
例如在表單驗(yàn)證中,就常常會(huì)使用到策略模式。

var strategy = {
    isNotEmpty:function(val,errorMsg){  //不為空
        if(val === ""){
            return errorMsg;
        }
    }
    isMobile:function(val,errorMsg){  //手機(jī)號(hào)
        if(!/^1[3|5|8][0-9]{9}$/.test(val)){
            return errorMsg;
        }
    }
}

//實(shí)現(xiàn)validator,負(fù)責(zé)接收請(qǐng)求。
var Validator = function(){
    this.cache = [];
};
Validator.protype.add = function(dom,rule,errorMsg){
        this.cache.push(function(){
            return strategy[rule](dom.value,errorMsg);
        })
};
Validator.protype.start = function(){
    var len = this.cache.length;
    for(var i = 0 ; i

> 使用策略模式之后,我們可以用過(guò)配置strategy來(lái)添加驗(yàn)證規(guī)則,可以很好的進(jìn)行復(fù)用,避免了很多條件選擇語(yǔ)句和代碼的復(fù)制粘貼。

原文鏈接:javascript設(shè)計(jì)模式--策略模式

上一篇:javascript設(shè)計(jì)模式--單例模式

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

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

相關(guān)文章

  • JavaScript設(shè)計(jì)模式----策略模式

    摘要:實(shí)際上在這種將函數(shù)作為一等對(duì)象的語(yǔ)言里,策略模式已經(jīng)融入到了語(yǔ)言本身當(dāng)中,我們經(jīng)常使用高階函數(shù)來(lái)封裝不同的行為,并且把它傳遞到另一個(gè)函數(shù)中。 聲明:這個(gè)系列為閱讀《JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐》 ----曾探@著一書(shū)的讀書(shū)筆記 1.策略模式的定義 將不變的部分和變化的部分隔開(kāi)是每個(gè)設(shè)計(jì)模式的主題。 定義一系列的算法,把它們一個(gè)個(gè)封裝起來(lái),并且使它們可以相互替換。 2.策略模式...

    forrest23 評(píng)論0 收藏0
  • JavaScript 設(shè)計(jì)模式(二):策略模式

    摘要:策略模式實(shí)現(xiàn)的也是類(lèi)似的場(chǎng)景。第二個(gè)部分是環(huán)境類(lèi)不變,接收客戶的請(qǐng)求,隨后把請(qǐng)求委托給某一個(gè)策略類(lèi)。參考文章設(shè)計(jì)模式設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐設(shè)計(jì)模式系統(tǒng)講解與應(yīng)用本文首發(fā),期待作者以樂(lè)之名本文原創(chuàng),有不當(dāng)?shù)牡胤綒g迎指出。 showImg(https://segmentfault.com/img/bVbugi7?w=800&h=600); 策略模式:定義一系列的算法,把它們一個(gè)個(gè)封裝起來(lái),并且...

    荊兆峰 評(píng)論0 收藏0
  • JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐系列之策略模式

    摘要:本系列為設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐作者曾探學(xué)習(xí)總結(jié),如想深入了解,請(qǐng)支持作者原版策略模式策略模式的定義定義一系列的算法,把它們一個(gè)個(gè)封裝起來(lái),并且使它們可以互相替換。 本系列為《JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐》(作者:曾探)學(xué)習(xí)總結(jié),如想深入了解,請(qǐng)支持作者原版 策略模式 策略模式的定義:定義一系列的算法,把它們一個(gè)個(gè)封裝起來(lái),并且使它們可以互相替換。 舉個(gè)形象的例子,使用策略模式計(jì)算...

    spademan 評(píng)論0 收藏0
  • JS策略模式JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐》閱讀筆記

    摘要:策略模式可以避免代碼中的多重判斷條件。策略模式在程序中或多或少的增加了策略類(lèi)。此文僅記錄本人閱讀設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐這個(gè)本時(shí)的感受,感謝作者曾探寫(xiě)出這么好的一本書(shū)。設(shè)計(jì)模式中很重要的一點(diǎn)就是將不變和變分離出來(lái)。參考設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐曾探 策略模式的定義是:定義一系列的算法,把它們一個(gè)個(gè)封裝起來(lái),并且是它們可以相互替換。 策略模式可以避免代碼中的多重判斷條件。 策略模式很好的體現(xiàn)了開(kāi)放-...

    Amos 評(píng)論0 收藏0
  • JavaScript設(shè)計(jì)模式策略模式

    摘要:設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐讀書(shū)筆記。策略模式可以有效避免多重條件選擇語(yǔ)句。當(dāng)然,策略模式也有一些缺點(diǎn)增加了許多策略類(lèi)或者策略對(duì)象。要使用策略模式,必須了解所有的,違反了最少知識(shí)原則。至此,回家咯附設(shè)計(jì)模式之發(fā)布訂閱模式觀察者模式 《JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐》讀書(shū)筆記。這本書(shū)挺好的,推薦。 俗話說(shuō),條條大路通羅馬。在現(xiàn)實(shí)生活中,我們可以采用很多方法實(shí)現(xiàn)同一個(gè)目標(biāo)。比如我們先定個(gè)小目...

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

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

0條評(píng)論

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