1.模式從何而來 ♦模式起源於建築領域 ♦模式之父—Christopher Alexander(克裡斯托弗·亞歷山大) ♦模式定義:模式是在特定環境下人們解決某類重覆出現問題的一套成功或有效的解決方案。【A pattern is a successful or efficient solution ...
1.模式從何而來
♦模式起源於建築領域
♦模式之父—Christopher Alexander(克裡斯托弗·亞歷山大)
♦模式定義:模式是在特定環境下人們解決某類重覆出現問題的一套成功或有效的解決方案。【A pattern is a successful or efficient solution to a recurring problem within a context.】
2.軟體模式的誕生
♦1991-1992年以“四人組(Gang of Four,簡稱GoF,分別是Erich Gamma, Richard Helm, Ralph Johnson和John Vlissides)”自稱的四位著名軟體工程學者將模式的思想引入軟體工程方法學。
♦1994年GoF歸納發表了23種在軟體開發中使用頻率較高的設計模式,旨在用模式來統一溝通面向對象方法在分析、設計和實現間的鴻溝。
♦軟體模式包括設計模式、架構模式、分析模式、過程模式。(實際上,在軟體開發生命周期的每一個階段都存在著一些被認同的模式。)
♦軟體模式的基礎結構:
- 問題描述:待解決的問題是什麼
- 前提條件:在何種環境或約束條件下使用
- 解法:如何解決
- 效果:有哪些優缺點
♦設計模式:
-
- 在軟體模式中,設計模式是研究最為深入的分支。
- 設計模式用於在特定的條件下為一些重覆出現的軟體設計問題提供合理的、有效的解決方案。
- 1995年,GoF出版包含23種設計模式的《設計模式:可復用面向對象軟體的基礎》(《Design Patterns: Elements of Reusable Object-Oriented Software》)。標志著設計模式正式成為面向對象軟體工程的一個重要研究分支。
3.設計模式是什麼
♦設計模式定義:設計模式是一套被反覆使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結,使用設計模式是為了可重用代碼、讓代碼更容易被他人理解並且保證代碼可靠性。
♦設計模式一般包含模式名稱、問題、目的、解決方案、效果等組成要素,其中關鍵要素是模式名稱、問題、解決方案和效果。
-
- 模式名稱:通過一兩個詞來描述模式的問題、解決方案和效果。絕大多數模式都是根據其功能或模式結構來命名。
- 問題:描述了應該在何時使用模式,它包含了設計中存在的問題以及問題存在的原因。
- 解決方案:描述了一個設計模式的組成成分,以及這些組成成分之間的相互關係,各自的職責和協作方式,通常通過UML類圖和核心代碼來進行描述。
- 效果:描述了模式的優缺點以及在使用模式時應權衡的問題。
♦設計模式分類:(兩種分類方式經常結合使用,如單例模式是對象創建型模式,模板方法模式是類行為型模式)
-
- 根據用途:
- 創建型模式:主要用於描述如何創建對象。
- 結構型模式:主要用於描述如何實現類或對象的組合。
- 行為型模式:主要用於描述類或對象怎樣交互以及怎樣分配職責。
- 根據處理關係:
- 類模式:處理類之間的關係。
- 對象模式:處理對象之間的關係。
- 23種設計模式包含5種創建型設計模式、7種結構型設計模式和11種行為型設計模式。(簡單工廠模式未包含在23種設計模式之中)
- 根據用途:
♦常用設計模式一覽表:
4.設計模式的作用
♦設計模式是成功的、能夠實現可維護性復用的設計方案,可以避免做重覆性的工作,有助於提高開發和設計效率。
♦設計模式提供了一套通用的設計辭彙和一種通用的形式來方便開發人員之間溝通和交流,使得設計方案更加通俗易懂。(跨語言、跨平臺、跨應用、跨國界)
♦設計模式有助於提高系統的可重用性、靈活性和可擴展性。
♦合理使用設計模式並對設計模式的使用情況進行文檔化,將有助於別人更快地理解系統。
♦學習設計模式將有助於初學者更加深入地理解面向對象思想。
模式從不保證任何東西,它不能保證你一定能夠做出可復用的軟體,提高你的生產率,更不能保證世界和平。模式並不能替代人來完成軟體系統的創造,它們只不過會給那些缺乏經驗但卻具備才能和創造力的人帶來希望。