最新文章
「Vue 實用技巧」策略模式實現動態(tài)表單驗證
在 Vue 的使用過程中會遇到各種場景,當普通使用時覺得沒什么,但是或許優(yōu)化一下可以更高效更優(yōu)美地進行開發(fā)。接下來就由石家莊網站建設工程師講解日常開發(fā)用到的小技巧。
策略模式 (Strategy Pattern)又稱政策模式,其定義一系列的算法,把它們一個個封裝起來,并且使它們可以互相替換。封裝的策略算法一般是獨立的,策略模式根據輸入來調整采用哪個算法。關鍵是策略的實現和使用分離。
1. 你曾見過的策略模式
現在電子產品種類繁多,尺寸多種多樣,有時候你會忍不住想拆開看看里面啥樣(想想小時候拆的玩具車還有遙控器),但是螺絲規(guī)格很多,螺絲刀尺寸也不少,如果每碰到一種規(guī)格就買一個螺絲刀,家里就得堆滿螺絲刀了。所以現在人們都用多功能的螺絲刀套裝,螺絲刀把只需要一個,碰到不同規(guī)格的螺絲只要換螺絲刀頭就行了,很方便,體積也變小很多。
2. 實例的代碼實現
具體的例子我們用編程上的例子來演示,比較好量化。
場景是這樣的,某個電商網站希望舉辦一個活動,通過打折促銷來銷售庫存物品,有的商品滿 100 減 30,有的商品滿 200 減 80,有的商品直接8折出售,這樣的邏輯交給我們,我們要怎樣去實現呢?
通過判斷輸入的折扣類型來計算商品總價的方式,幾個 if-else 就滿足了需求,但是這樣做法的缺點也很明顯:
priceCalculate 函數隨著折扣類型的增多, if-else 判斷語句會變得越來越臃腫;
如果增加了新的折扣類型或者折扣類型的算法有所改變,那么需要更改 priceCalculate 函數的實現,這是違反開放-封閉原則的;
可復用性差,如果在其他的地方也有類似這樣的算法,但規(guī)則不一樣,上述代碼不能復用;
我們可以改造一下,將計算折扣的算法部分提取出來保存為一個對象,折扣的類型作為 key,這樣索引的時候通過對象的鍵值索引調用具體的算法:
算法就被隱藏起來,并且預留了增加策略的入口,便于擴展。
以上關于Vue 使用中的小技巧屬于石家莊網站建設工程師的個人觀點,大家如果對此有著不同的見解,可以關注公眾號“尚武科技派”給我留言,大家可以交流一下自己的心德體會,共同學習進步。