摘要:設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐讀書(shū)筆記。策略模式可以有效避免多重條件選擇語(yǔ)句。當(dāng)然,策略模式也有一些缺點(diǎn)增加了許多策略類(lèi)或者策略對(duì)象。要使用策略模式,必須了解所有的,違反了最少知識(shí)原則。至此,回家咯附設(shè)計(jì)模式之發(fā)布訂閱模式觀(guān)察者模式
《JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐》讀書(shū)筆記。這本書(shū)挺好的,推薦。
俗話(huà)說(shuō),條條大路通羅馬。在現(xiàn)實(shí)生活中,我們可以采用很多方法實(shí)現(xiàn)同一個(gè)目標(biāo)。比如我們先定個(gè)小目標(biāo),先掙它一個(gè)億。我們可以根據(jù)具體的實(shí)際情況來(lái)完成這個(gè)目標(biāo)。
如果你是個(gè)富二代,可以接手家族生意,分分鐘掙它一個(gè)億。
如果你是個(gè)官二代,可以......(你懂的)。
如果你是個(gè)屌絲,可以......別做夢(mèng)了,好好擼碼。
策略模式的定義
定義一系列的算法,把它們一個(gè)個(gè)封裝起來(lái),并且使它們可以相互替換。
舉個(gè)例子:表單校驗(yàn)
在一個(gè)Web項(xiàng)目中,注冊(cè)、登錄等功能的實(shí)現(xiàn)都離不開(kāi)表單提交。表單校驗(yàn)也是前端常常需要做的事。假設(shè)我們正在編寫(xiě)一個(gè)注冊(cè)的頁(yè)面,在點(diǎn)擊提交按鈕之前,有如下幾條校驗(yàn)邏輯:
用戶(hù)名不可為空,不允許以空白字符命名,用戶(hù)名長(zhǎng)度不能小于2位。
密碼長(zhǎng)度不能小于6位。
正確的手機(jī)號(hào)碼格式。
也許,一開(kāi)始我們會(huì)這么寫(xiě):
策略模式-校驗(yàn)表單
這是一種很常見(jiàn)的編碼方式,但它有很明顯的缺點(diǎn):
registerForm.onsubmit 函數(shù)比較龐大,包含了很多if語(yǔ)句,這些語(yǔ)句要覆蓋所有的校驗(yàn)規(guī)則。
若校驗(yàn)規(guī)則有變,不得不深入到registerForm.onsubmit 函數(shù)的內(nèi)部實(shí)現(xiàn),違反開(kāi)放-封閉原則。
算法的復(fù)用性差。
下面,讓我們來(lái)用策略模式重構(gòu)表單校驗(yàn)
策略模式:表單校驗(yàn)
策略模式-校驗(yàn)表單
策略模式優(yōu)缺點(diǎn)
策略模式是一種常用且有效的設(shè)計(jì)模式。
策略模式可以有效避免多重條件選擇語(yǔ)句。
策略模式提供了對(duì)開(kāi)放-封裝原則的完美支持,將方法封裝在獨(dú)立的strategy中,使得它們易于切換,易于理解,易于擴(kuò)展。
復(fù)用性高。
當(dāng)然,策略模式也有一些缺點(diǎn)
增加了許多策略類(lèi)或者策略對(duì)象。
要使用策略模式,必須了解所有的strategy,違反了最少知識(shí)原則。
至此,回家咯~
附:JavaScript設(shè)計(jì)模式之發(fā)布-訂閱模式(觀(guān)察者模式)-Part1
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://hztianpu.com/yun/90999.html
摘要:本系列為設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐作者曾探學(xué)習(xí)總結(jié),如想深入了解,請(qǐng)支持作者原版策略模式策略模式的定義定義一系列的算法,把它們一個(gè)個(gè)封裝起來(lái),并且使它們可以互相替換。 本系列為《JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐》(作者:曾探)學(xué)習(xí)總結(jié),如想深入了解,請(qǐng)支持作者原版 策略模式 策略模式的定義:定義一系列的算法,把它們一個(gè)個(gè)封裝起來(lái),并且使它們可以互相替換。 舉個(gè)形象的例子,使用策略模式計(jì)算...
摘要:策略模式策略模式指的是定義一系列的算法,把它們一個(gè)個(gè)封裝起來(lái),將不變的部分和變化的部分隔開(kāi),實(shí)際就是將算法的使用和實(shí)現(xiàn)分離出來(lái)這樣就能避免很多的條件判斷并且增強(qiáng)了代碼的復(fù)用性其中包含一個(gè)策略類(lèi)和一個(gè)環(huán)境類(lèi)計(jì)算獎(jiǎng)金的例子策略類(lèi)環(huán)境類(lèi)設(shè)置原始工 策略模式 策略模式指的是 定義一系列的算法,把它們一個(gè)個(gè)封裝起來(lái),將不變的部分和變化的部分隔開(kāi),實(shí)際就是將算法的使用和實(shí)現(xiàn)分離出來(lái), 這樣就能避...
摘要:介一回,聊策略模式,策略模式定義了一系列的算法,并將每一個(gè)算法封裝起來(lái),而且使它們還可以相互替換。策略模式讓算法獨(dú)立于使用它的客戶(hù)而獨(dú)立變化。下一回,聊一聊的享元模式。 本回內(nèi)容介紹 上一回,聊了聊鏈?zhǔn)骄幊蹋M了jQuery和underscore.js,并寫(xiě)了一個(gè)遍歷多維數(shù)組的函數(shù)。介一回,聊策略模式(Strategy),策略模式定義了一系列的算法,并將每一個(gè)算法封裝起來(lái),而且使它們...
摘要:做前端開(kāi)發(fā)已經(jīng)好幾年了,對(duì)設(shè)計(jì)模式一直沒(méi)有深入學(xué)習(xí)總結(jié)過(guò)。今天第一天,首先來(lái)講策略模式。什么是策略模式四兄弟的經(jīng)典設(shè)計(jì)模式中,對(duì)策略模式的定義如下定義一系列的算法,把它們一個(gè)個(gè)封裝起來(lái),并且使它們可互相替換。 做前端開(kāi)發(fā)已經(jīng)好幾年了,對(duì)設(shè)計(jì)模式一直沒(méi)有深入學(xué)習(xí)總結(jié)過(guò)。隨著架構(gòu)相關(guān)的工作越來(lái)越多,越來(lái)越能感覺(jué)到設(shè)計(jì)模式成為了我前進(jìn)道路上的一個(gè)阻礙。所以從今天開(kāi)始深入學(xué)習(xí)和總結(jié)經(jīng)典的設(shè)計(jì)模...
閱讀 1667·2021-10-11 10:59
閱讀 2130·2021-09-09 11:36
閱讀 1655·2019-08-30 15:55
閱讀 1470·2019-08-29 11:20
閱讀 3199·2019-08-26 13:39
閱讀 1617·2019-08-26 13:37
閱讀 2144·2019-08-26 12:11
閱讀 1467·2019-08-23 14:28