【javascript】javasrcipt設計模式之策略模式
阿新 • • 發佈:2018-03-21
影響 配置 可能 pan style 類庫 ava 自由 AC
策略模式支持在運行時由使用者選擇合適的算法,對於使用者而言不用關心背後的具體事項,而使用者自動根據當前程序執行的上下文和配置,從已有的算法列表中選擇出合適的算法來處理當前任務。
1.要解決的問題
2.如何實現
3.在開源框架和類庫中的使用
4.總結
要解決的問題
策略模式同樣解決的是解耦的問題,目的是使調用的客戶端與需要調用的算法解耦開來,保證算法的內部實現的更改不會影響到客戶端的調用。當然這些算法往往需要封裝為較為通用的。這樣一來可以自由的從算法幾種選取需要調用的合適的算法,就像搭積木一樣,而算法也可以獨立出來單測。
如何實現(應用場景之一表單驗證)
對於一個表單,各個字段的輸入值格式並不唯一,有的是數字,有的是電話號碼。因而他們可能有各自都有的驗證的要求。
策略模式是可復用的,比如多個字段可能都要求驗證非空,這時,我們可以把場景的驗證策略抽象為一個策略集合
使用者需要對表單數據進行校驗時,只需要傳入數據以及制定各個字段的驗證策略,就可以給出相應的驗證結果了,從而將表達你的處理和驗證邏輯分離開來。
// 將校驗的數據 var data = { name : ‘hh, gender: 1 } // 校驗規則配置 validator.config = { name:{ text: ‘姓名‘, validators: [‘isNotEmpty‘,‘isValidName‘] }, identity:{ text:‘身份證號‘, validators:[‘isnotEmpty‘,‘isValidIdentity‘] } } // 調用獲得校驗結果 validator.validate(data);
【javascript】javasrcipt設計模式之策略模式