設計模式是軟件工程中為解決常見問題而總結出來的一系列通用解決方案。它們可以分為三大類別:創建型模式、結構型模式和行為型模式。下面列舉了一些常見的設計模式及其分類:
創建型模式(Creational Patterns)
創建型模式關注對象的創建過程,幫助我們創建對象的同時隱藏創建邏輯,使得系統更具靈活性,通常用于對象實例化的控制。
- 單例模式(Singleton): 確保一個類只有一個實例,并提供一個全局訪問點。
- 工廠模式(Factory Method): 定義一個用于創建對象的接口,但讓子類決定實例化哪一個類。
- 抽象工廠模式(Abstract Factory): 提供一個接口,用于創建相關或依賴對象的家族,而不需要明確指定具體類。
- 建造者模式(Builder): 將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。
- 原型模式(Prototype): 通過復制現有的實例來創建新的對象,避免重新初始化。
結構型模式(Structural Patterns)
結構型模式關注類和對象的組合,通過組合獲得更高效、靈活的結構,簡化系統的設計,使系統更易于理解和維護。
- 適配器模式(Adapter): 將一個類的接口轉換成客戶希望的另一個接口,使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。
- 橋接模式(Bridge): 將抽象部分與其實現部分分離,使它們都可以獨立變化。
- 組合模式(Composite): 允許你將對象組合成樹形結構來表示整體與部分層次的結構,使得用戶對單個對象和組合對象的使用具有一致性。
- 裝飾器模式(Decorator): 動態地給一個對象添加一些額外的職責,就增加功能來說,裝飾器模式相比生成子類更為靈活。
- 外觀模式(Facade): 為子系統中的一組接口提供一個一致的界面,簡化子系統的使用。
- 享元模式(Flyweight): 運用共享技術有效地支持大量細粒度的對象。
- 代理模式(Proxy): 為其他對象提供一種代理以控制對這個對象的訪問。
行為型模式(Behavioral Patterns)
行為型模式關注對象之間的通信,以及它們之間的職責分配,描述類或對象如何交互以及職責的分配。
- 責任鏈模式(Chain of Responsibility): 使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關系。將這些對象連成一條鏈,并沿著這條鏈傳遞請求,直到有一個對象處理它為止。
- 命令模式(Command): 將請求封裝成一個對象,從而可用不同的請求對客戶進行參數化,以及支持可撤銷的操作。
- 迭代器模式(Iterator): 提供一種方法順序訪問一個聚合對象中各個元素,而又不需要暴露該對象的內部表示。
- 中介者模式(Mediator): 用一個中介對象來封裝一系列的對象交互,使各對象不需要顯示地相互引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。
- 備忘錄模式(Memento): 在不破壞封裝性的前提下,捕獲一個對象的內部狀態,并在該對象之外保存這個狀態,這樣以后就可將該對象恢復到原先保存的狀態。
- 觀察者模式(Observer): 定義對象之間的一對多依賴關系,當一個對象的狀態發生改變時,所有依賴于它的對象都會得到通知并自動更新。
- 狀態模式(State): 允許一個對象在其內部狀態改變時改變它的行為,對象看起來好像修改了它的類。
- 策略模式(Strategy): 定義一系列的算法,把它們一個個封裝起來,并且使它們可以相互替換,讓算法獨立于使用它的客戶。
- 模板方法模式(Template Method): 定義一個操作中的算法骨架,而將一些步驟延遲到子類中,使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。
- 訪問者模式(Visitor): 表示一個作用于某對象結構中的各個元素的操作,它使你可以在不改變各元素的類的前提下定義作用于這些元素的新操作。
以上是設計模式中的一部分,每種模式都有其特定的應用場景和優勢,熟練掌握可以幫助開發者編寫出更加清晰、可維護和靈活的代碼。