引言
軟件開(kāi)發(fā)過(guò)程中,我們經(jīng)常會(huì)遇到各種設(shè)計(jì)問(wèn)題,例如如何管理對(duì)象之間的關(guān)系、如何優(yōu)化代碼的可復(fù)用性和可維護(hù)性等等。為了解決這些問(wèn)題,我們可以使用設(shè)計(jì)模式。
設(shè)計(jì)模式是一種被廣泛接受的軟件設(shè)計(jì)思想,它提供了一套通用的解決方案,可以幫助我們更好地解決常見(jiàn)的軟件設(shè)計(jì)問(wèn)題。設(shè)計(jì)模式是從實(shí)踐中總結(jié)出來(lái)的,它不僅可以提高代碼的可讀性和可維護(hù)性,還可以提高開(kāi)發(fā)效率和代碼的可復(fù)用性。
常見(jiàn)設(shè)計(jì)模式原則
設(shè)計(jì)模式有常見(jiàn)的五大原則 - SOLID
- 單一職責(zé)原則(SRP)
- 開(kāi)放封閉原則(OCP)
- 里氏替換原則(LSP)
- 接口隔離原則(DIP)
- 依賴倒置原則(ISP)
補(bǔ)充第六原則,迪米特法則(Law of Demeter,LoD)也稱為最少知識(shí)原則(Least Knowledge Principle,LKP)
常見(jiàn)設(shè)計(jì)模式類型
- 創(chuàng)建型模式:負(fù)責(zé)對(duì)象的創(chuàng)建和初始化,共有5種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
- 結(jié)構(gòu)型模式:負(fù)責(zé)對(duì)象的組合,共有7種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。
- 行為型模式:負(fù)責(zé)對(duì)象之間的通信,共有11種:觀察者模式、策略模式、迭代器模式、命令模式、責(zé)任鏈模式、模板方法模式、訪問(wèn)者模式、中介者模式、解釋器模式、過(guò)濾器模式、備忘錄模式。
目錄
創(chuàng)建型模式
- 抽象工廠模式(Abstract Factory Pattern)
抽象工廠模式是一種創(chuàng)建型設(shè)計(jì)模式,它提供了一種封裝一組相關(guān)或相互依賴對(duì)象創(chuàng)建過(guò)程的方法,使得我們可以在不知道具體實(shí)現(xiàn)細(xì)節(jié)的情況下,創(chuàng)建一系列相互協(xié)作的對(duì)象。
- 工廠方法模式(Factory Method Pattern)
工廠方法模式是一種創(chuàng)建型設(shè)計(jì)模式,它提供了一種將對(duì)象的創(chuàng)建過(guò)程封裝起來(lái)的方法,使得我們可以在不知道具體實(shí)現(xiàn)細(xì)節(jié)的情況下,創(chuàng)建各種不同類型的對(duì)象。
- 單例模式(Singleton Pattern)
單例模式是一種保證一個(gè)類只有一個(gè)實(shí)例的模式,它可以避免多個(gè)實(shí)例造成的資源浪費(fèi)和對(duì)象的不一致性。單例模式通常使用一個(gè)私有的構(gòu)造函數(shù)和一個(gè)靜態(tài)的實(shí)例變量來(lái)實(shí)現(xiàn)。
- 建造者模式(Builder Pattern)
將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。建造者模式可以將復(fù)雜對(duì)象的構(gòu)建過(guò)程抽象出來(lái),從而使得系統(tǒng)更加靈活。
- 原型模式(Prototype Pattern)
用原型實(shí)例指定創(chuàng)建對(duì)象的種類,并通過(guò)復(fù)制這些原型創(chuàng)建新的對(duì)象。原型模式可以在運(yùn)行時(shí)動(dòng)態(tài)地創(chuàng)建對(duì)象,從而避免了靜態(tài)工廠方法所帶來(lái)的編譯時(shí)耦合。
結(jié)構(gòu)型模式
- 適配器模式(Adapter Pattern)
適配器模式是一種將一個(gè)類的接口轉(zhuǎn)換成客戶端所期望的另一種接口的模式,它可以讓原本不兼容的類能夠協(xié)同工作。這種模式可以避免因接口不匹配而導(dǎo)致的代碼重構(gòu)和重復(fù)開(kāi)發(fā)。
- 裝飾器模式(Decorator Pattern)
裝飾器模式是一種在運(yùn)行時(shí)動(dòng)態(tài)地給對(duì)象添加新的功能的模式,它通過(guò)將對(duì)象包裝在一個(gè)裝飾器中來(lái)實(shí)現(xiàn)。這種模式可以避免使用繼承帶來(lái)的復(fù)雜性和靜態(tài)特性,提高代碼的靈活性和可擴(kuò)展性。
- 代理模式(Proxy Pattern)
代理模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,它允許我們創(chuàng)建一個(gè)代理對(duì)象來(lái)控制對(duì)另一個(gè)對(duì)象的訪問(wèn)。代理對(duì)象可以充當(dāng)原始對(duì)象的訪問(wèn)接口,從而控制對(duì)原始對(duì)象的訪問(wèn)。代理模式通常用于遠(yuǎn)程訪問(wèn)、延遲加載、訪問(wèn)控制等方面。
- 外觀模式(Facade Pattern)
為一組復(fù)雜的子系統(tǒng)提供一個(gè)簡(jiǎn)單的接口,從而隱藏子系統(tǒng)的復(fù)雜性。外觀模式可以降低客戶端和子系統(tǒng)之間的耦合度,同時(shí)提高客戶端的易用性。
- 橋接模式(Bridge Pattern)
橋接模式是一種將抽象部分與它的實(shí)現(xiàn)部分分離開(kāi)來(lái)的模式,使它們可以獨(dú)立地變化。這種模式可以避免因?yàn)閷?shí)現(xiàn)細(xì)節(jié)的變化而導(dǎo)致的代碼修改和重構(gòu)。
- 組合模式(Composite Pattern)
組合模式是一種將對(duì)象組合成樹(shù)形結(jié)構(gòu)的模式,使得客戶端可以像處理單個(gè)對(duì)象一樣處理對(duì)象的組合。這種模式可以使得對(duì)象之間的關(guān)系更加清晰,提高代碼的可讀性和可維護(hù)性。
- 享元模式(Flyweight Pattern)
享元模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,用于優(yōu)化對(duì)象的創(chuàng)建和使用。該模式通過(guò)共享相同的數(shù)據(jù),來(lái)減少內(nèi)存的使用和對(duì)象的創(chuàng)建。通常情況下,享元模式適用于存在大量相似對(duì)象的情況
行為型模式
- 觀察者模式(Observer Pattern)
觀察者模式是一種對(duì)象間的一對(duì)多依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴它的對(duì)象都會(huì)收到通知并自動(dòng)更新。這種模式可以降低對(duì)象之間的耦合度,提高系統(tǒng)的靈活性和可擴(kuò)展性。
- 策略模式(Strategy Pattern)
策略模式是一種定義一系列算法的模式,它將每個(gè)算法封裝在一個(gè)類中,并使它們可以互相替換。這種模式可以避免使用大量的條件語(yǔ)句和重復(fù)代碼,提高代碼的可維護(hù)性和可擴(kuò)展性。
- 迭代器模式(Iterator Pattern)
迭代器模式是一種訪問(wèn)一個(gè)聚合對(duì)象中的各個(gè)元素的方式,而又不需要暴露該對(duì)象的內(nèi)部表示。這種模式可以讓客戶端透明地訪問(wèn)聚合對(duì)象中的元素,同時(shí)避免了聚合對(duì)象的數(shù)據(jù)結(jié)構(gòu)對(duì)客戶端的依賴。
- 命令模式(Command Pattern)
將請(qǐng)求封裝成對(duì)象,從而使不同的請(qǐng)求可以被不同的對(duì)象處理。命令模式可以將請(qǐng)求的發(fā)送者和接收者解耦,同時(shí)支持請(qǐng)求的撤銷和重做
- 責(zé)任鏈模式(Chain of Responsibility Pattern)
將請(qǐng)求的發(fā)送者和接收者解耦,通過(guò)一條由多個(gè)處理對(duì)象組成的鏈來(lái)處理請(qǐng)求。責(zé)任鏈模式可以根據(jù)需求動(dòng)態(tài)地組合處理對(duì)象,從而實(shí)現(xiàn)請(qǐng)求的自動(dòng)轉(zhuǎn)發(fā)和處理。
- 模板方法模式(Template Method Pattern)
定義一個(gè)操作中的算法骨架,將一些步驟延遲到子類中。模板方法模式可以提高代碼的復(fù)用性和可維護(hù)性,同時(shí)可以避免子類中的代碼重復(fù)
- 狀態(tài)模式(State Pattern)
允許對(duì)象在內(nèi)部狀態(tài)發(fā)生改變時(shí)改變它的行為。狀態(tài)模式將對(duì)象的行為和狀態(tài)進(jìn)行分離,從而將復(fù)雜的條件判斷轉(zhuǎn)化為簡(jiǎn)單的狀態(tài)切換。
- 中介者模式(Mediator Pattern)
用一個(gè)中介對(duì)象來(lái)封裝一系列的對(duì)象交互,從而使對(duì)象之間的交互松散耦合。中介者模式可以簡(jiǎn)化對(duì)象之間的交互,同時(shí)降低對(duì)象之間的依賴關(guān)系。
- 解釋器模式(Interpreter Pattern)
給定一個(gè)語(yǔ)言,定義它的文法的一種表示,并定義一個(gè)解釋器,該解釋器使用該表示來(lái)解釋語(yǔ)言中的句子。解釋器模式可以將復(fù)雜的語(yǔ)言轉(zhuǎn)化為易于處理的數(shù)據(jù)結(jié)構(gòu),從而使得語(yǔ)言的解釋更加容易。
- 訪問(wèn)者模式(Visitor Pattern)
訪問(wèn)者模式是一種行為設(shè)計(jì)模式,它可以讓你將算法與它們操作的對(duì)象分離。這樣,你可以在不修改對(duì)象結(jié)構(gòu)的情況下,向現(xiàn)有的對(duì)象結(jié)構(gòu)添加新的操作。
-
備忘錄模式(Memento Pattern)
備忘錄模式是一種行為型設(shè)計(jì)模式,它允許我們將對(duì)象的狀態(tài)保存在備忘錄對(duì)象中,從而可以在以后恢復(fù)對(duì)象的狀態(tài)。該模式通常用于需要撤銷、恢復(fù)操作的場(chǎng)景,例如文本編輯器、繪圖應(yīng)用等。備忘錄模式通過(guò)將狀態(tài)保存在備忘錄對(duì)象中來(lái)實(shí)現(xiàn)狀態(tài)的恢復(fù),從而保證了對(duì)象的封裝性和數(shù)據(jù)安全性。
參考資料
https://dofactory.com/net/abstract-factory-design-pattern文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-549879.html
https://refactoring.guru/design-patterns文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-549879.html
到了這里,關(guān)于重溫設(shè)計(jì)模式系列 --- 完整精華篇的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!