1. 程式人生 > >【javascript】javasrcipt設計模式之策略模式

【javascript】javasrcipt設計模式之策略模式

影響 配置 可能 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設計模式之策略模式