13161216443

您所在位置: 首頁> 學習課程> java架構師 | 設計模式概述:設計模式從何而來?

java架構師 | 設計模式概述:設計模式從何而來?

發布百知教育 來源:學習課程 2019-11-29

設計模式從何而來


在介紹設計模式的起源之前,我們先要了解一下模式的誕生與發展。與很多軟件工程技術一樣,模式起源于建筑領域,畢竟與只有幾十年歷史的軟件工程相比,已經擁有幾千年沉淀的建筑工程有太多值得學習和借鑒的地方。


那么模式是如何誕生的?讓我們先來認識一個人——Christopher Alexander(克里斯托弗.亞歷山大),哈佛大學建筑學博士、美國加州大學伯克利分校建筑學教授、加州大學伯克利分校環境結構研究所所長、美國藝術和科學院院士……頭銜真多,不過他還有一個“昵稱”——模式之父(The father of patterns)。Christopher Alexander博士及其研究團隊用了約20年的時間,對住宅和周邊環境進行了大量的調查研究和資料收集工作,發現人們對舒適住宅和城市環境存在一些共同的認同規律,Christopher Alexander在著作A Pattern Language: Towns, Buildings, Construction中把這些認同規律歸納為253個模式,對每一個模式(Pattern)都從Context(前提條件)、Theme或Problem(目標問題)、 Solution(解決方案)三個方面進行了描述,并給出了從用戶需求分析到建筑環境結構設計直至經典實例的過程模型。


在Christopher Alexander的另一部經典著作《建筑的永恒之道》中,他給出了關于模式的定義:


每個模式都描述了一個在我們的環境中不斷出現的問題,然后描述了該問題的解決方案的核心,通過這種方式,我們可以無數次地重用那些已有的成功的解決方案,無須再重復相同的工作。這個定義可以簡單地用一句話表示:


模式是在特定環境下人們解決某類重復出現問題的一套成功或有效的解決方案?!続 pattern is a successful or efficient solution to a recurring  problem within a context】


java架構師


1990年,軟件工程界開始關注ChristopherAlexander等在這一住宅、公共建筑與城市規劃領域的重大突破。最早將模式的思想引入軟件工程方法學的是1991-1992年以“四人組(Gang of Four,簡稱GoF,分別是Erich Gamma, Richard Helm, Ralph Johnson和John Vlissides)”自稱的四位著名軟件工程學者,他們在1994年歸納發表了23種在軟件開發中使用頻率較高的設計模式,旨在用模式來統一溝通面向對象方法在分析、設計和實現間的鴻溝。


GoF將模式的概念引入軟件工程領域,這標志著軟件模式的誕生。軟件模式(Software Patterns)是將模式的一般概念應用于軟件開發領域,即軟件開發的總體指導思路或參照樣板。軟件模式并非僅限于設計模式,還包括架構模式、分析模式和過程模式等,實際上,在軟件開發生命周期的每一個階段都存在著一些被認同的模式。


軟件模式是在軟件開發中某些可重現問題的一些有效解決方法,軟件模式的基礎結構主要由四部分構成,包括問題描述【待解決的問題是什么】、前提條件【在何種環境或約束條件下使用】、解法【如何解決】和效果【有哪些優缺點】,如圖所示:


java架構師


軟件模式與具體的應用領域無關,也就是說無論你從事的是移動應用開發、桌面應用開發、Web應用開發還是嵌入式軟件的開發,都可以使用軟件模式。


在軟件模式中,設計模式是研究最為深入的分支,設計模式用于在特定的條件下為一些重復出現的軟件設計問題提供合理的、有效的解決方案,它融合了眾多專家的設計經驗,已經在成千上萬的軟件中得以應用。 1995年, GoF將收集和整理好的23種設計模式匯編成Design Patterns: Elements of Reusable Object-Oriented 


Software【《設計模式:可復用面向對象軟件的基礎》】一書,該書的出版也標志著設計模式正式成為面向對象(Object Oriented)軟件工程的一個重要研究分支。


從1995年至今,無論是在大型API或框架(如JDK、.net Framework等)、輕量級框架(如Struts、Spring、 Hibernate、JUnit等)、還是應用軟件的開發中,設計模式都得到了廣泛的應用。如果你正在從事面向對象開發或正準備從事面向對象開發,無論你是使用Java、C#、Objective-C、VB.net、Smalltalk等純面向對象編程語言,還是使用C++、PHP、Delphi、JavaScript等可支持面向對象編程的語言,如果你一點設計模式也不懂,我可以毫不夸張的說:你真的out了。


注釋:版權聲明:本文為CSDN博主「lovelion」的原創文章


java培訓班:http://www.akpsimsu.com/java2019










上一篇:大數據培訓 | 數據分析最常用的16款開源工具

下一篇:應屆生去公司找個Java程序員的職位需要什么技能?

相關推薦

www.akpsimsu.com

有位老師想和您聊一聊

關閉

立即申請