<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 從招式與內功談起——設計模式概述(一) 關于金庸小說中到底是招式重要還是內功重要的爭論從未停止,我們在這里并不分析張無忌的九陽神功和令狐沖的獨孤九劍到底哪個更厲害,但我想每個武林人士夢寐以求的應該是既有淋漓的招式又有深厚的內功。看到這里大家可能會產生疑問了?搞什么,討論什么招式與內功,我只是個軟件開發人員。別急,正因為你是軟件開發人員我才跟你談這個,因為我們的軟件開發技術也包括一些招式和內功:Java、C#、C++等編程語言,Eclipse、Visual Studio等開發工具,JSP、ASP.net等開發技術,Struts、Hibernate、JBPM等框架技術,所有這些我們都可以認為是招式;而數據結構、算法、設計模式、重構、軟件工程等則為內功。招式可以很快學會,但是內功的修煉需要更長的時間。我想每一位軟件開發人員也都希望成為一名兼具淋漓招式和深厚內功的“上乘”軟件工程師,而對設計模式的學習與領悟將會讓你“內功”大增,再結合你日益純熟的“招式”,你的軟件開發“功力”一定會達到一個新的境界。既然這樣,還等什么,趕快行動吧。下面就讓我們正式踏上神奇而又美妙的設計模式之旅。 ![](http://img.blog.csdn.net/20131223220903125) 1 設計模式從何而來 在介紹設計模式的起源之前,我們先要了解一下模式的誕生與發展。與很多軟件工程技術一樣,模式起源于建筑領域,畢竟與只有幾十年歷史的軟件工程相比,已經擁有幾千年沉淀的建筑工程有太多值得學習和借鑒的地方。 那么模式是如何誕生的?讓我們先來認識一個人——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的另一部經典著作《建筑的永恒之道》中,他給出了關于模式的定義: 每個模式都描述了一個在我們的環境中不斷出現的問題,然后描述了該問題的解決方案的核心,通過這種方式,我們可以無數次地重用那些已有的成功的解決方案,無須再重復相同的工作。這個定義可以簡單地用一句話表示: 模式是在特定環境下人們解決某類重復出現問題的一套成功或有效的解決方案。【A pattern is a successful or efficient solution to a recurring problem within a context】 1990年,軟件工程界開始關注ChristopherAlexander等在這一住宅、公共建筑與城市規劃領域的重大突破。最早將模式的思想引入軟件工程方法學的是1991-1992年以“四人組(Gang of Four,簡稱GoF,分別是Erich Gamma, Richard Helm, Ralph Johnson和John Vlissides)”自稱的四位著名軟件工程學者,他們在1994年歸納發表了23種在軟件開發中使用頻率較高的設計模式,旨在用模式來統一溝通面向對象方法在分析、設計和實現間的鴻溝。 GoF將模式的概念引入軟件工程領域,這標志著軟件模式的誕生。軟件模式(Software Patterns)是將模式的一般概念應用于軟件開發領域,即軟件開發的總體指導思路或參照樣板。軟件模式并非僅限于設計模式,還包括架構模式、分析模式和過程模式等,實際上,在軟件開發生命周期的每一個階段都存在著一些被認同的模式。 軟件模式是在軟件開發中某些可重現問題的一些有效解決方法,軟件模式的基礎結構主要由四部分構成,包括問題描述【待解決的問題是什么】、前提條件【在何種環境或約束條件下使用】、解法【如何解決】和效果【有哪些優缺點】,如圖1-1所示: ![](http://my.csdn.net/uploads/201204/02/1333301568_8769.gif) 圖1-1 軟件模式基本結構 軟件模式與具體的應用領域無關,也就是說無論你從事的是移動應用開發、桌面應用開發、Web應用開發還是嵌入式軟件的開發,都可以使用軟件模式。 在軟件模式中,設計模式是研究最為深入的分支,設計模式用于在特定的條件下為一些重復出現的軟件設計問題提供合理的、有效的解決方案,它融合了眾多專家的設計經驗,已經在成千上萬的軟件中得以應用。 1995年, GoF將收集和整理好的23種設計模式匯編成Design Patterns: Elements of Reusable Object-Oriented Software【《設計模式:可復用面向對象軟件的基礎》】一書,該書的出版也標志著設計模式正式成為面向對象(Object Oriented)軟件工程的一個重要研究分支。 ![](http://img.blog.csdn.net/20131223220953406) 從1995年至今,無論是在大型API或框架(如JDK、.net Framework等)、輕量級框架(如Struts、Spring、 Hibernate、JUnit等)、還是應用軟件的開發中,設計模式都得到了廣泛的應用。如果你正在從事面向對象開發或正準備從事面向對象開發,無論你是使用Java、C#、Objective-C、VB.net、Smalltalk等純面向對象編程語言,還是使用C++、PHP、Delphi、JavaScript等可支持面向對象編程的語言,如果你一點設計模式也不懂,我可以毫不夸張的說:你真的out了。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看