23 种设计模式的分类 - Design Patterns
23 種設計模式的分類 - Design Patterns
設計模式 - Design Patterns
https://refactoringguru.cn/design-patterns
https://refactoring.guru/design-patterns
Design patterns are typical solutions to common problems in software design. Each pattern is like a blueprint that you can customize to solve a particular design problem in your code.
設計模式是軟件設計中常見問題的典型解決方案,代表了最佳的實踐。這些解決方案是眾多軟件開發人員經過相當長的一段時間的試驗和錯誤總結出來的。每個模式就像一張藍圖,你可以通過對其進行定制來解決代碼中的特定設計問題。
設計模式是針對軟件設計中常見問題的工具箱,其中的工具就是各種經過實踐驗證的解決方案。
1. Classification of patterns - 模式的分類
模式可以根據其意圖或目的分為三種類別:
- 創建型模式 (Creational patterns) 提供創建對象的機制,提升已有代碼的靈活性和可復用性。5 個。
Factory method (工廠方法), Abstract factory (抽象工廠), Builder (生成器), Prototype (原型), Singleton (單例) - 結構型模式 (Structural patterns) 將對象和類組裝成較大的結構,同時保持結構的靈活和高效。7 個。
Adapter (適配器), Composite (組合), Facade (外觀), Proxy (代理), Bridge (橋接), Decorator (裝飾), Flyweight (享元) - 行為模式 (Behavioral patterns) 負責對象間的高效溝通和職責委派。11 個。
Chain of responsibility (責任鏈), Memento (備忘錄), Template method (模板方法), Command (命令), Observer (觀察者), Visitor (訪問者), Iterator (迭代器), State (狀態), Mediator (中介者), Strategy (策略), Interpreter (解釋器)
2. Creational patterns - 創建型模式
These patterns provide various object creation mechanisms, which increase flexibility and reuse of existing code.
創建型模式模式提供創建對象的機制,提升已有代碼的靈活性和可復用性。
2.1 Factory Method - 工廠方法
在父類中提供一個創建對象的接口以允許子類決定實例化對象的類型。
2.2 Abstract Factory - 抽象工廠
創建一系列相關的對象,而無需指定其具體類。
2.3 Builder - 生成器
分步驟創建復雜對象,該模式允許你使用相同的創建代碼生成不同類型和形式的對象。
2.4 Prototype - 原型
復制已有對象,而又無需使代碼依賴它們所屬的類。
2.5 Singleton - 單例
singleton ['s??ɡ(?)lt?n]:n. (某一花色的) 單張,單元素集合
保證一個類只有一個實例,并提供一個訪問該實例的全局節點。
3. Structural patterns - 結構型模式
These patterns explain how to assemble objects and classes into larger structures while keeping these structures flexible and efficient.
結構型模式模式將對象和類組裝成較大的結構,同時保持結構的靈活和高效。
3.1 Adapter - 適配器
讓接口不兼容的對象能夠相互合作。
3.2 Composite - 組合
使用它將對象組合成樹狀結構,并且能像使用獨立對象一樣使用它們。
3.3 Facade - 外觀
facade [f??sɑ?d]:n. 外表,(建筑物的) 正面
能為程序庫、框架或其他復雜類提供一個簡單的接口。
3.4 Proxy - 代理
proxy [?pr?ksi]:n. 代理人,代表,代理權,代表權
提供對象的替代品或其占位符。代理控制著對于原對象的訪問,并允許在將請求提交給對象前后進行一些處理。
3.5 Bridge - 橋接
將一個大類或一系列緊密相關的類拆分為抽象和實現兩個獨立的層次結構,從而能在開發時分別使用。
3.6 Decorator - 裝飾
decorator [?dek??re?t?(r)]:adj. 適于室內裝飾的 n. (房屋的) 油漆匠
允許你通過將對象放入包含行為的特殊封裝對象中來為原對象綁定新的行為。
3.7 Flyweight - 享元
flyweight ['fla?.we?t]:n. 蠅量級拳擊手 (體重 48 至 51 公斤之間)
摒棄了在每個對象中保存所有數據的方式,通過共享多個對象所共有的相同狀態,讓你能在有限的內存容量中載入更多對象。
4. Behavioral patterns - 行為模式
These patterns are concerned with algorithms and the assignment of responsibilities between objects.
行為模式負責對象間的高效溝通和職責委派。
4.1 Chain of Responsibility - 責任鏈
允許你將請求沿著處理者鏈進行發送。收到請求后,每個處理者均可對請求進行處理,或將其傳遞給鏈上的下個處理者。
4.2 Memento - 備忘錄
memento [m??ment??]:n. 紀念品
允許在不暴露對象實現細節的情況下保存和恢復對象之前的狀態。
4.3 Template Method - 模板方法
在超類中定義一個算法的框架,允許子類在不修改結構的情況下重寫算法的特定步驟。
4.4 Command - 命令
它可將請求轉換為一個包含與請求相關的所有信息的獨立對象。該轉換讓你能根據不同的請求將方法參數化、延遲請求執行或將其放入隊列中,且能實現可撤銷操作。
4.5 Observer - 觀察者
允許你定義一種訂閱機制,可在對象事件發生時通知多個“觀察”該對象的其他對象。
4.6 Visitor - 訪問者
將算法與其所作用的對象隔離開來。
4.7 Iterator - 迭代器
不暴露集合底層表現形式 (列表、棧和樹等) 的情況下遍歷集合中所有的元素。
4.8 State - 狀態
在一個對象的內部狀態變化時改變其行為,使其看上去就像改變了自身所屬的類一樣。
4.9 Mediator - 中介者
mediator ['mi:die?t?(r)]:n. 調停者,斡旋者,解決紛爭的人 (或機構)
減少對象之間混亂無序的依賴關系。該模式會限制對象之間的直接交互,迫使它們通過一個中介者對象進行合作。
4.10 Strategy - 策略
定義一系列算法,并將每種算法分別放入獨立的類中,以使算法的對象能夠相互替換。
4.11 Interpreter - 解釋器
給定一個語言,定義它的文法的一種表示,并定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子。
References
https://sourcemaking.com/design_patterns
https://refactoringguru.cn/design-patterns
https://refactoring.guru/design-patterns
設計模式:可復用面向對象軟件的基礎
總結
以上是生活随笔為你收集整理的23 种设计模式的分类 - Design Patterns的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 可以使用python开发财务软件吗_给还
- 下一篇: 怎么看待凯恩斯主义