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

資訊專(zhuān)欄INFORMATION COLUMN

JS設(shè)計(jì)模式——策略模式

Jrain / 3469人閱讀

摘要:版本策略模式在上個(gè)例子中雖然初步實(shí)現(xiàn)了策略模式,但是是仿照的傳統(tǒng)面向?qū)ο笳Z(yǔ)言,而的實(shí)現(xiàn)更為簡(jiǎn)單,直接把原來(lái)的實(shí)例定義成函數(shù),原先的類(lèi)用函數(shù)來(lái)委托。

1. 介紹

策略模式是JS設(shè)計(jì)模式中一大重要的模式有著廣泛的應(yīng)用

2. 定義

定義一系列的算法,把它們一個(gè)個(gè)封裝起來(lái),并且使它們可以相互替換

3. 應(yīng)用

根據(jù)等級(jí)、工資計(jì)算獎(jiǎng)金等類(lèi)似情況、使用不同的動(dòng)畫(huà)效果、表單驗(yàn)證等

4. 思想

把算法實(shí)現(xiàn)和算法調(diào)用分開(kāi)

5. 實(shí)現(xiàn) 1. 基本的策略模式

這個(gè)例子是根據(jù)傳統(tǒng)的面向?qū)ο笳Z(yǔ)言進(jìn)行改造的,不同的類(lèi)都實(shí)現(xiàn)了相同的方法,傳入不同的實(shí)例都可以調(diào)用相同的方法。這其中用到了組合、委托、多態(tài)的思想。其中把不同的實(shí)現(xiàn)過(guò)程進(jìn)行拆分,分成performanceS,performanceA,這是組合的思想,都實(shí)現(xiàn)相同的方法calculate這是多態(tài)的思想,多態(tài)的意思是不同的對(duì)象調(diào)用相同的方法其結(jié)果是不同的。再通過(guò)Bonus類(lèi)去調(diào)用這是委托。

var performanceS=function(){}
performanceS.prototype.calculate=function(salary){
    return salary*4
}
var performanceA=function(){}
performanceA.prototype.calculate=function(salary){
    return salary*3
}
var Bonus=function(){
    this.salary=""
    this.strategy=""
}
Bonus.prototype.setSalary=function(salary){
    this.salary=salary
}
Bonus.prototype.setStrategy=function(strategy){
    this.strategy=strategy
}
Bonus.prototype.getBonus=function(){
    return this.strategy.calculate(this.salary)
}
var bonus = new Bonus()
bonus.setSalary(1000)
bonus.setStrategy(new performanceS())
console.log(bonus.getBonus())//4000
bonus.setStrategy(new performanceA())
console.log(bonus.getBonus())//3000
2. JS版本策略模式

在上個(gè)例子中雖然初步實(shí)現(xiàn)了策略模式,但是是仿照的傳統(tǒng)面向?qū)ο笳Z(yǔ)言,而JS的實(shí)現(xiàn)更為簡(jiǎn)單,直接把原來(lái)的strategy實(shí)例定義成函數(shù),原先的Bonus類(lèi)用calculateBonus函數(shù)來(lái)委托。組合的思想也還是比較明顯,多態(tài)在這里體現(xiàn)得不是很明顯,在strategieslevel這句中體現(xiàn)。

var strategies={
    S:function(salary){
        return salary*4
    },
    A:function(salary){
        return salary*3
    }
}
calculateBonus=function(level,salary){
    return strategies[level](salary)
}
console.log(calculateBonus("S",1000))//4000
3. 表單驗(yàn)證例子

在實(shí)際項(xiàng)目中經(jīng)常需要對(duì)表單進(jìn)行驗(yàn)證,用策略模式去實(shí)現(xiàn)表單驗(yàn)證是一種很不錯(cuò)的方法

var stratiges={
    isNotEmpty:function(val,errormsg){
        if(val.length<0){
            return errormsg
        }
    },
    minLen:function(val,minlen,errormsg){
        if(val.length           
               
                                           
                       
                 

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

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

相關(guān)文章

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

    摘要:將不變的部分和變化的部分隔開(kāi)是每個(gè)設(shè)計(jì)模式的主題,策略模式也不例外,策略模式的目的就是將算法的使用與算法的實(shí)現(xiàn)分離開(kāi)來(lái)。 前言 本系列文章主要根據(jù)《JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐》整理而來(lái),其中會(huì)加入了一些自己的思考。希望對(duì)大家有所幫助。 文章系列 js設(shè)計(jì)模式--單例模式 js設(shè)計(jì)模式--策略模式 js設(shè)計(jì)模式--代理模式 概念 策略模式的定義是:定義一系列的算法,把它們一個(gè)...

    bigdevil_s 評(píng)論0 收藏0
  • JS 設(shè)計(jì)模式 十四(策略模式

    摘要:策略模式定義一系列的算法把它們一個(gè)個(gè)封裝起來(lái)并且使它們可相互替換。策略模式要素策略接口,用來(lái)約束一系列具體的策略算法。策略模式策略購(gòu)買(mǎi)輛總金額策略購(gòu)買(mǎi)輛總金額策略模式優(yōu)點(diǎn)算法可以自由切換。策略模式缺點(diǎn)策略類(lèi)會(huì)增多。所有策略類(lèi)都需要對(duì)外暴露。 策略模式 定義一系列的算法,把它們一個(gè)個(gè)封裝起來(lái), 并且使它們可相互替換。本模式使得算法可獨(dú)立于使用它的客戶(hù)而變化。策略模式是把一個(gè)類(lèi)中經(jīng)常改變或...

    sutaking 評(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ì)模式系列 - 策略模式與動(dòng)態(tài)表單驗(yàn)證

    摘要:策略模式又稱(chēng)政策模式,其定義一系列的算法,把它們一個(gè)個(gè)封裝起來(lái),并且使它們可以互相替換。的表單具有表單驗(yàn)證功能,用來(lái)校驗(yàn)用戶(hù)輸入的表單內(nèi)容。實(shí)際需求中表單驗(yàn)證項(xiàng)一般會(huì)比較復(fù)雜,所以需要給每個(gè)表單項(xiàng)增加自定義校驗(yàn)方法。 showImg(https://segmentfault.com/img/remote/1460000020135990); 策略模式 (Strategy Pattern...

    宋華 評(píng)論0 收藏0
  • JS設(shè)計(jì)模式-策略模式

    摘要:策略模式是指對(duì)一系列的算法定義,并將每一個(gè)算法封裝起來(lái),而且使它們還可以相互替換。策略模式讓算法獨(dú)立于使用它的客戶(hù)而獨(dú)立變化。 策略模式是指對(duì)一系列的算法定義,并將每一個(gè)算法封裝起來(lái),而且使它們還可以相互替換。策略模式讓算法獨(dú)立于使用它的客戶(hù)而獨(dú)立變化。 優(yōu)點(diǎn): 策略模式利用組合、委托等技術(shù)和思想,可以避免很多if條件語(yǔ)句 策略模式提供了開(kāi)放-封閉原則,使代碼更容易理解和拓展 簡(jiǎn)單...

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

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

0條評(píng)論

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