image
開發(fā)中,我們或多或少地接觸了設(shè)計模式,但是很多時候不知道自己使用了哪種設(shè)計模式或者說該使用何種設(shè)計模式。本文意在梳理常見設(shè)計模式的特點,從而對它們有比較清晰的認(rèn)知。
JavaScript 中常見設(shè)計模式
各設(shè)計模式關(guān)鍵詞
看完了上述設(shè)計模式后,把它們的關(guān)鍵詞特點羅列出來,以后提到某種設(shè)計模式,進(jìn)而聯(lián)想相應(yīng)的關(guān)鍵詞和例子,從而心中有數(shù)。
| 設(shè)計模式 | 特點 | 案例 |
|---|---|---|
| 單例模式 | 一個類只能構(gòu)造出唯一實例 | 創(chuàng)建菜單對象 |
| 策略模式 | 根據(jù)不同參數(shù)可以命中不同的策略 | 動畫庫里的算法函數(shù) |
| 代理模式 | 代理對象和本體對象具有一致的接口 | 圖片預(yù)加載 |
| 迭代器模式 | 能獲取聚合對象的順序和元素 | each([1, 2, 3], cb) |
| 發(fā)布-訂閱模式 | PubSub | 瀑布流庫 |
| 命令模式 | 不同對象間約定好相應(yīng)的接口 | 按鈕和命令的分離 |
| 組合模式 | 組合模式在對象間形成一致對待的樹形結(jié)構(gòu) | 掃描文件夾 |
| 模板方法模式 | 父類中定好執(zhí)行順序 | 咖啡和茶 |
| 享元模式 | 減少創(chuàng)建實例的個數(shù) | 男女模具試裝 |
| 職責(zé)鏈模式 | 通過請求第一個條件,會持續(xù)執(zhí)行后續(xù)的條件,直到返回結(jié)果為止 | if else 優(yōu)化 |
| 中介者模式 | 對象和對象之間借助第三方中介者進(jìn)行通信 | 測試結(jié)束告知結(jié)果 |
| 裝飾者模式 | 動態(tài)地給函數(shù)賦能 | 天冷了穿衣服,熱了脫衣服 |
| 狀態(tài)模式 | 每個狀態(tài)建立一個類,狀態(tài)改變會產(chǎn)生不同行為 | 電燈換擋 |
| 適配者模式 | 一種數(shù)據(jù)結(jié)構(gòu)改成另一種數(shù)據(jù)結(jié)構(gòu) | 枚舉值接口變更 |
參考文獻(xiàn)
*《JavaScript設(shè)計模式與開發(fā)實踐》