摘要:版本策略模式在上個例子中雖然初步實現了策略模式,但是是仿照的傳統面向對象語言,而的實現更為簡單,直接把原來的實例定義成函數,原先的類用函數來委托。
1. 介紹
策略模式是JS設計模式中一大重要的模式有著廣泛的應用
2. 定義定義一系列的算法,把它們一個個封裝起來,并且使它們可以相互替換
3. 應用根據等級、工資計算獎金等類似情況、使用不同的動畫效果、表單驗證等
4. 思想把算法實現和算法調用分開
5. 實現 1. 基本的策略模式這個例子是根據傳統的面向對象語言進行改造的,不同的類都實現了相同的方法,傳入不同的實例都可以調用相同的方法。這其中用到了組合、委托、多態的思想。其中把不同的實現過程進行拆分,分成performanceS,performanceA,這是組合的思想,都實現相同的方法calculate這是多態的思想,多態的意思是不同的對象調用相同的方法其結果是不同的。再通過Bonus類去調用這是委托。
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())//30002. JS版本策略模式
在上個例子中雖然初步實現了策略模式,但是是仿照的傳統面向對象語言,而JS的實現更為簡單,直接把原來的strategy實例定義成函數,原先的Bonus類用calculateBonus函數來委托。組合的思想也還是比較明顯,多態在這里體現得不是很明顯,在strategieslevel這句中體現。
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))//40003. 表單驗證例子
在實際項目中經常需要對表單進行驗證,用策略模式去實現表單驗證是一種很不錯的方法
var stratiges={ isNotEmpty:function(val,errormsg){ if(val.length<0){ return errormsg } }, minLen:function(val,minlen,errormsg){ if(val.length
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/95343.html
摘要:將不變的部分和變化的部分隔開是每個設計模式的主題,策略模式也不例外,策略模式的目的就是將算法的使用與算法的實現分離開來。 前言 本系列文章主要根據《JavaScript設計模式與開發實踐》整理而來,其中會加入了一些自己的思考。希望對大家有所幫助。 文章系列 js設計模式--單例模式 js設計模式--策略模式 js設計模式--代理模式 概念 策略模式的定義是:定義一系列的算法,把它們一個...
摘要:策略模式定義一系列的算法把它們一個個封裝起來并且使它們可相互替換。策略模式要素策略接口,用來約束一系列具體的策略算法。策略模式策略購買輛總金額策略購買輛總金額策略模式優點算法可以自由切換。策略模式缺點策略類會增多。所有策略類都需要對外暴露。 策略模式 定義一系列的算法,把它們一個個封裝起來, 并且使它們可相互替換。本模式使得算法可獨立于使用它的客戶而變化。策略模式是把一個類中經常改變或...
摘要:策略模式可以避免代碼中的多重判斷條件。策略模式在程序中或多或少的增加了策略類。此文僅記錄本人閱讀設計模式與開發實踐這個本時的感受,感謝作者曾探寫出這么好的一本書。設計模式中很重要的一點就是將不變和變分離出來。參考設計模式與開發實踐曾探 策略模式的定義是:定義一系列的算法,把它們一個個封裝起來,并且是它們可以相互替換。 策略模式可以避免代碼中的多重判斷條件。 策略模式很好的體現了開放-...
摘要:策略模式又稱政策模式,其定義一系列的算法,把它們一個個封裝起來,并且使它們可以互相替換。的表單具有表單驗證功能,用來校驗用戶輸入的表單內容。實際需求中表單驗證項一般會比較復雜,所以需要給每個表單項增加自定義校驗方法。 showImg(https://segmentfault.com/img/remote/1460000020135990); 策略模式 (Strategy Pattern...
摘要:策略模式是指對一系列的算法定義,并將每一個算法封裝起來,而且使它們還可以相互替換。策略模式讓算法獨立于使用它的客戶而獨立變化。 策略模式是指對一系列的算法定義,并將每一個算法封裝起來,而且使它們還可以相互替換。策略模式讓算法獨立于使用它的客戶而獨立變化。 優點: 策略模式利用組合、委托等技術和思想,可以避免很多if條件語句 策略模式提供了開放-封閉原則,使代碼更容易理解和拓展 簡單...
閱讀 1156·2021-11-24 09:38
閱讀 3604·2021-11-22 15:32
閱讀 3458·2019-08-30 15:54
閱讀 2568·2019-08-30 15:53
閱讀 1494·2019-08-30 15:52
閱讀 2498·2019-08-30 13:15
閱讀 1837·2019-08-29 12:21
閱讀 1395·2019-08-26 18:36