设计模式简介 - Introduction to Design Patterns
設計模式簡介 - Introduction to Design Patterns
1. 設計模式 (Design Patterns)
設計模式是軟件設計中常見問題的典型解決方案,可用于解決代碼中反復出現的設計問題。模式并不是一段特定的代碼,而是解決特定問題的一般性概念。
模式和算法在概念上都是已知特定問題的典型解決方案。但算法總是明確定義達成特定目標所需的一系列步驟,而模式則是對解決方案的更高層次描述。同一模式在兩個不同程序中的實現代碼可能會不一樣。算法更像是菜譜:提供達成目標的明確步驟。而模式更像是藍圖:你可以看到最終的結果和模式的功能,但需要自己確定實現步驟。
1.1 模式的分類 (Classification of patterns)
最基礎的、底層的模式是慣用技巧,一般只能在一種編程語言中使用。
最通用的、高層的模式是架構模式,開發者可以在任何編程語言中使用這類模式。
模式可以根據其意圖或目的分為三種類別:
- 創建型模式 (Creational patterns) 提供創建對象的機制,提升已有代碼的靈活性和可復用性。
- 結構型模式 (Structural patterns) 將對象和類組裝成較大的結構,并同時保持結構的靈活和高效。
- 行為模式 (Behavioral patterns) 負責對象間的高效溝通和職責委派。
1.2 模式
模式是面向對象設計中常見問題的典型解決方案。模式的概念是由 Christopher Alexander 在其著作 A Pattern Language: Towns, Buildings, Construction 中首次提出的。
1994 年,Erich Gamma, John Vlissides, Ralph Johnson, and Richard Helm 出版
了 Design Patterns: Elements of Reusable Object-Oriented Software 一書,將設計模式的概念應用到程序開發領域中,提供了 23 個模式來解決面向對象程序設計中的各種問題。 由于書名太長, 簡稱為 the book by the gang of four,進一步簡化為 the GOF book。
- 設計模式是針對軟件設計中常見問題的工具箱,其中的工具是各種經過實踐驗證的解決方案。
- 設計模式定義了一種讓你和團隊成員能夠更高效溝通的通用語言。
1.3 爭議
- 一種針對不完善編程語言的蹩腳解決方案
通常當所選編程語言或技術缺少必要的抽象功能時,人們才需要設計模式。在這種情況下,模式是一種可為語言提供更優功能的蹩腳解決方案。例如策略模式在絕大部分現代編程語言中可以簡單地使用匿名 (lambda) 函數來實現。
- 低效的解決方案
模式試圖將已經廣泛使用的方式系統化。 許多人會將這樣的統一化認為是某種教條, 他們會 “全心全意” 地實施這樣的模式, 而不會根據項目的實際情況對其進行調整。
- 不當使用
如果你只有一把鐵錘, 那么任何東西看上去都像是釘子。在學習了某個模式后, 他們會在所有地方使用該模式, 即便是在較為簡單的代碼也能勝任的地方也是如此。
References
https://sourcemaking.com/design_patterns
https://refactoringguru.cn/design-patterns
https://refactoring.guru/design-patterns
A Pattern Language: Towns, Buildings, Construction
Design Patterns: Elements of Reusable Object-Oriented Software
總結
以上是生活随笔為你收集整理的设计模式简介 - Introduction to Design Patterns的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows audio错误0x800
- 下一篇: 大话设计模式--计算器