前端常用的 7 種設(shè)計模式有哪些?
時間:2024-02-11 11:05:01 | 來源:網(wǎng)站運營
時間:2024-02-11 11:05:01 來源:網(wǎng)站運營
前端常用的 7 種設(shè)計模式有哪些?:設(shè)計模式有很多,可以分為幾個大類:
1.創(chuàng)建型設(shè)計模式
1. 簡單工廠模式:由一個工廠對象負(fù)責(zé)創(chuàng)建某一種產(chǎn)品對象類的實例,主要用來創(chuàng)建同一類的對象
2. 工廠方法模式:通過對產(chǎn)品類的抽象使其創(chuàng)建業(yè)務(wù)主要負(fù)責(zé)用于創(chuàng)建多類產(chǎn)品的實例
3. 抽象工廠模式:通過對類的工廠抽象使其業(yè)務(wù)用于對產(chǎn)品類簇的創(chuàng)建,而不負(fù)責(zé)創(chuàng)建某一類產(chǎn)品的實例
4.建造者模式: 將一個復(fù)雜對象的構(gòu)建層與其表示層相互分離,同樣的構(gòu)建過程可采用不同的表示 與工廠模式區(qū)別:工廠模式主要是為了創(chuàng)建對象實例或者類簇(抽象工廠),關(guān)心的是最終產(chǎn)出(創(chuàng)建)的是什么,不關(guān)心你創(chuàng)建的整個過程,所以通過工廠模式得到的都是對象實例或者類簇, 而建造者模式目的是為了創(chuàng)建對象,但它更多關(guān)心的是創(chuàng)建這個對象的整個過程,甚至創(chuàng)建對象的每個細(xì)節(jié)
5. 單例模式:只允許實例化一次的對象類,確保所有對象都訪問唯一實例
6. 原型模式:用原型實例指向創(chuàng)建對象的類,使用與創(chuàng)建新的對象的類恭喜原型對象的屬性以及方法
2.結(jié)構(gòu)型型設(shè)計模式
- 外觀模式: 為一組復(fù)雜的子系統(tǒng)接口提供一個更高級的統(tǒng)一接口,通過這個接口使得對子系統(tǒng)接口的訪問更容易。有時也會用于對底層結(jié)構(gòu)兼容性做統(tǒng)一封裝來簡化用戶使用
2. 代理模式:由于一個對象不能直接引用另一個對象,所以需要通過代理對象在這兩個對象之間起到中介的作用
3.橋接模式: 在系統(tǒng)沿著多個維度變化的同時,又不增加其復(fù)雜度并已達(dá)到解耦 抽象工廠模式和建造者模式主要業(yè)務(wù)在于創(chuàng)建,而橋接模式實現(xiàn)解耦,使實現(xiàn)層與抽象層分開處理,避免需求的改變早餐對象內(nèi)部的修改,體現(xiàn)了面向?qū)ο髮U展的開放及對修改的關(guān)閉原則,這非常有用
4.適配器模式: 將一個類(對象)的接口(方法或者屬性)轉(zhuǎn)化成另一個接口以滿足用戶需求,使類(對象)之間接口的不兼容問題通過適配器得以解決
5. 裝飾者模式:在不改變源對象的基礎(chǔ)上,通過對其進(jìn)行包裝擴展(添加屬性或者方法)使原有對象可以滿足用戶的更復(fù)雜需求, 適配器模式與裝飾者模式區(qū)別:適配器模式是對原有對象適配,需要了解原有方法實現(xiàn)的具體細(xì)節(jié),而裝飾者提供的方法與原來的方法功能是有一定區(qū)別,不需要知道原有方法實現(xiàn)的具體細(xì)節(jié),只有當(dāng)調(diào)用方法時才會知道
6.組合模式: 又稱整體模式,將對象組合成樹形結(jié)構(gòu)以表示“部分整體”的層次結(jié)構(gòu)。組合模式使得用戶對單個對象和組合對象的使用具有一致性
7.亨元模式: 運用共享技術(shù)有效的支持大量的細(xì)粒度的對象,避免對象間擁有相同內(nèi)容造成多余的開銷
3.行為型設(shè)計模式
- 狀態(tài)模式: 當(dāng)一個對象的內(nèi)部狀態(tài)發(fā)生改變時,會導(dǎo)致其行為的改變,這看起來像是改變了對象
- 中介者模式: 通過中介者對象封裝一系列對象之間的交互,使對象之間不再相互引用,降低他們之間的耦合,中介者模式中消息的發(fā)送方只有一個,就是中介者對象,而且中介者對象不能訂閱消息,只有訂閱者才可以訂閱中介者的消息 而觀察者中一個對象既可以是消息的發(fā)送者也可以是消息的接收者
- 職責(zé)鏈模式: 解決請求的發(fā)送者與請求的接受者之間的耦合,通過職責(zé)鏈上的多個對象對分解請求流程,實現(xiàn)請求在多個對象之間的傳遞,直到最后一個對象完成請求的處理
- 模板方法模式: 父類中定義一組操作算法的骨架,而將一些實現(xiàn)步驟延遲到子類中,使得子類可以不改變父類的算法結(jié)構(gòu)的同時可重新定義算法中某些實現(xiàn)步驟
- 命令模式: 將請求與實現(xiàn)解耦并封裝成獨立對象,從而使不同的請求對客戶端的實現(xiàn)參數(shù)化
- 觀察者模式:又被稱作發(fā)布-訂閱者模式或消息機制,定義了一種依賴關(guān)系,解決了主題對象與觀察者之間功能的耦合,比如vue的響應(yīng)式也利用了此模式來收集依賴
- 訪問者模式: 針對于對象結(jié)構(gòu)中的元素,定義在不改變該對象的前提下訪問結(jié)構(gòu)中元素的新方法
- 迭代器模式: 在不暴露對象內(nèi)部結(jié)構(gòu)的同時,可以順序的訪問聚合對象內(nèi)部的元素
9. 策略模式:將定義的一組算法封裝起來,使其相互之間可以替換,封裝的算法具有一定獨立性,不會隨客戶端變化而變化
10.備忘錄模式: 在不破壞對象的封裝性的前提下,在對象之外捕獲并保存該對象內(nèi)部的狀態(tài)以便日后對象使用或者對象恢復(fù)到以前的某個狀態(tài),通過備忘錄模式來緩存數(shù)據(jù)(qiankun 的快照沙箱)
4.技巧型設(shè)計模式
- 鏈模式: 通過在對象方法中將當(dāng)前對象返回,實現(xiàn)對同一個對象多個方法的鏈?zhǔn)秸{(diào)用(比如jquery鏈?zhǔn)秸{(diào)用)
2. 委托模式:多個對象接收并處理同一請求,他們將請求委托給另一個對象統(tǒng)一處理請求
3. 數(shù)據(jù)訪問對象模式: 抽象和封裝對數(shù)據(jù)源的訪問與存儲,DAO通過對數(shù)據(jù)源連接的管理方便對數(shù)據(jù)的訪問與存儲
4. 節(jié)流模式:對重復(fù)的業(yè)務(wù)邏輯進(jìn)行節(jié)流控制,執(zhí)行最后一次操作并取消其他操作,以提高性能
5.惰性模式: 減少每次代碼執(zhí)行時的重復(fù)性的分支判斷,通過對對象重定義來屏蔽源對象中的分支判斷
6.參與者模式: 在特定的作用域中執(zhí)行給定的函數(shù),并將參數(shù)原封不動的傳遞
7.等待者模式: 通過對多個異步進(jìn)程監(jiān)聽,來觸發(fā)未來發(fā)生的動作
5.架構(gòu)型設(shè)計模式
- 同步模塊模式: 請求發(fā)出后,無論模塊是否存在,立即執(zhí)行后續(xù)的邏輯,實現(xiàn)模塊開發(fā)中對模塊的立即引用
- 異步模塊模式: 請求發(fā)出后,繼續(xù)其他業(yè)務(wù)邏輯,知道模塊加載完成執(zhí)行后續(xù)的路平級,實現(xiàn)模塊開發(fā)中對模塊加載完成后的引用
以上加粗字體可以認(rèn)為是比較常見,工作當(dāng)中對設(shè)計模式的合理利用可以達(dá)到事半功倍效果,結(jié)合實際場景切勿生搬硬套;