1策略模式
???在程序設(shè)計中磷仰,我們也常常遇到類似的情況境蔼,要實現(xiàn)某一個功能有多種方案可以選擇箍土。比如 一個壓縮文件的程序瞒爬,既可以選擇 zip 算法侧但,也可以選擇 gzip 算法禀横。(2018/07/04)
策略模式的定義是: ????定義一系列的算法柏锄,把它們一個個封裝起來趾娃,并且使它們可以相互替換。
在項目開發(fā)過程中,我們經(jīng)常需要定義一系列的算法,用來計算不同類型數(shù)據(jù)的總和 ,? 比如說
某天,小紅去商場購物 ,買了一雙陸游鞋 a元 ,一件T恤 b 元, 一套面膜套裝? c 元 , 一個蘋果手機d 元,
和一個GoPro 價格 f 元, 所以 這就可以實用策略模式,分為? 衣服? ,化妝品 ,電子商品 分別求的分類總和.
代碼示例
var calculateBonus = function( performanceLevel, salary ){
????????if ( performanceLevel === 'S' ){
????????????return salary * 4;
????????}
????????if ( performanceLevel === 'A' ){
????????????return salary * 3;
????????}
????????if ( performanceLevel === 'B' ){????????
????????????return salary * 2;
????????}
};
calculateBonus( 'B', 20000 ); // 輸出:40000
calculateBonus( 'S', 6000 ); // 輸出:24000
????????一個基于策略模式的程序至少由兩部分組成茫舶。第一個部分是一組策略類,策略類封裝了具體
的算法讥耗,并負責(zé)具體的計算過程疹启。 第二個部分是環(huán)境類 Context,Context 接受客戶的請求喊崖,隨后
把請求委托給某一個策略類
????????這句話如果說的簡單點,就是說必須有具體的分類標(biāo)準(zhǔn),和 具體的應(yīng)用場景.這里 也可以簡單的
說明類的多態(tài).
2.迭代模式
? ? ? ? ? ? 迭代器模式是指提供一種方法順序訪問一個聚合對象中的各個元素,而又不需要暴露該對象?
的內(nèi)部表示荤懂。迭代器模式可以把迭代的過程從業(yè)務(wù)邏輯中分離出來,在使用迭代器模式之后晤锥,即使
不關(guān)心對象的內(nèi)部構(gòu)造廊宪,也可以按順序訪問其中的每個元素.
迭代器模式定義: 循環(huán)訪問 聚合對象 的各個元素
比如 :?這篇文章中說到的5種常見的遍歷對象的方法, 以及比如 jQuery 中的$.each 函數(shù)
原理就是: 其中回調(diào)函數(shù)中的? 參數(shù) i 為當(dāng)前索引,n 為當(dāng)前元素.
代碼示例如下
$.each( [1, 2, 3], function( i, n ){
console.log( '當(dāng)前下標(biāo)為: '+ i );
console.log( '當(dāng)前值為:' + n );
});
迭代器模式是一種相對簡單的模式箭启,簡單到很多時候我們都不認為它是一種設(shè)計模式傅寡。