• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            《設計模式精解》讀書筆記

            Posted on 2008-05-14 17:53 RichardHe 閱讀(378) 評論(0)  編輯 收藏 引用 所屬分類: [轉]

            1、模式是應該結合在一起共同解決問題的。

            評論:以前看《GOF設計模式》的時候主要就是看目的,然后就是代碼,對協作啊,優缺點啊,效果啊都不怎么注意,不過就算看了也不知所云。學下來就像背數學公式一樣,單個是記住了,拿到具體環境里又懵了??磥磉€是得多花點時間看看模式的關聯啊。

             

            2、我的錯誤是:我嘗試先創建問題領域中的累,然后將這些類縫合起來形成最終的系統。——Alexander把這樣的過程稱為一個“壞主意”。我從來沒有問過我自己:我是否擁有正確的類?僅僅因為這些類看起來如此正確、如此明顯。我擁有的是在開始分析時立刻進入腦海中的類,是我們的老師告訴我們應該在系統中尋找的“名詞”。但是我的錯誤就是僅僅嘗試把它們簡單地放在一起。

            評論:連大牛都會犯這樣的錯誤,我這樣的菜鳥這樣分析系統應該也比較正常吧。在看問題的層次上,我們太過于重視細節,就像我寫WinForm程序時先考慮有哪些組件可以使用一樣,把思路給限制住了,忽視了類所處的環境、上下文。

             

            3、面向對象的范式:使用對象將責任轉義到更局部的范圍。對象應該對自己負責,并且這種責任應該被清楚的定義出來。

            評論:這個對類的定義就要合理的多。作者認為軟件開發中有三個視角:概念(用例)->規格(接口)->實現(代碼)。從最低層次看,類就是變量+函數,但這樣就太狹隘了。真正的對象應該與現實生活中的對象相似,有自己的行為、狀態,自己對自己負責(多么精確的概述啊)。

             

            4、抽象類就是其他類的占位符。

            評論:比較形象的描述。我先描述類的大致行為供調用者了解,具體的行為留到子類實現,抽象類與子類達成一個契約。

             

            5、過早的對細節投入過多的關心是一個分析缺陷。

            評論:同2

             

            6、留意你的直觀:當你看到某些不喜歡的東西時,你胃部的感覺。

            評論:牛人就是幽默。這里主要是說明如何感覺一個設計是壞的設計的。我是說最近寫程序胃老不舒服,飯也吃不好……

             

            7、關注模式的場景而非解決方案。

            評論:作者自始至終一直強調是場景決定解決方案,而不是為了實現某個模式而去進行設計,否則就像小學生套公式一樣了。場景分析好了,模式自然也就出來了(這是境界比較高的時候)。

             

            8、在創建對象時用共同點/變化點分析而非觀察名詞與動詞。因此,我們要:

               a、發現并封裝變化點。

               b、優先使用對象組合,而非類繼承。

            評論:關于共同點/變化點的分析,在Bridge模式中體現的猶為明顯(我在前面的Blog中介紹過),借助分析矩陣也可以幫助理清思路。而b點是面向對象設計中的基本原則,就不用多說了。

             

            9switch語句常常標志著:(1)對多態行為的需要。(2)存在著放錯地方的責任。請考慮用一種更普適的解決方案代替switch語句,比如抽象、將責任分配給另外的對象等等。

            評論:老聽別人說丑陋的switch語句、ifelse語句,都不是太懂,現在好像有點懂了,因為條件語句不靈活,很難維護吧。碰到它馬上就要想到用多態的方式去處理,像State模式、Visitor模式就和這有關。

             

            10、用模式的方法去思考:

            步驟:

            1)、發現我在問題領域中擁有的模式

            2)、對于這些需要分析的模式,做下列工作:

               a、挑出為其他模式提供最多場景的模式。

               b、在我概念性最高的設計中使用這個模式。

               c、識別任何可能已經出現的附加模式。將它們添加到“需要分析的模式”中。

               d、對需要分析而未分析的模式,重復上述工作。

            3)、按照需要將細節添加的設計中。擴展方法和類定義。

            評論:具體的說就是找到可以統領全局的模式,再用其他的模式配合它,“面向模式的設計”(POP)。算了吧,我連OOP都沒學好,這個以后再說啦。

             

            11、在學習面向對象技術的早期學習設計模式,可以大大幫助你提高對面向對象分析、設計的理解。

            評論:這個倒是第一次聽說,不過怎么也得先把繼承、封裝、多態弄清楚吧。再加上一條,在學習設計模式時,一定要先讀這本《設計模式精解》,再看《GOF設計模式》,

            posts - 94, comments - 138, trackbacks - 0, articles - 94

            Copyright © RichardHe

            91精品国产色综合久久| 中文字幕亚洲综合久久| 亚洲va久久久噜噜噜久久男同| 久久中文字幕人妻熟av女| 一本一本久久a久久综合精品蜜桃| 热re99久久6国产精品免费| 亚洲成色999久久网站| 色狠狠久久综合网| 国内精品久久久久影院免费| 久久这里的只有是精品23| 丁香五月网久久综合| 欧美亚洲国产精品久久| 97精品国产97久久久久久免费 | 国产成人无码精品久久久免费| 久久天天躁狠狠躁夜夜av浪潮| 久久成人国产精品| 一本一本久久A久久综合精品 | 久久露脸国产精品| 精品午夜久久福利大片| 色欲综合久久躁天天躁蜜桃| 久久久久噜噜噜亚洲熟女综合| 国产精品久久久久天天影视| 成人午夜精品无码区久久| 久久99九九国产免费看小说| 久久久久综合国产欧美一区二区| 久久天堂AV综合合色蜜桃网| 久久天天躁狠狠躁夜夜avapp | 无码专区久久综合久中文字幕| 久久久受www免费人成| 久久国产精品99精品国产987| 无码国内精品久久人妻| 久久久久久久久波多野高潮| 国产精品久久久久免费a∨| 色综合久久夜色精品国产| 色婷婷久久综合中文久久一本| 久久久久亚洲爆乳少妇无 | 久久亚洲中文字幕精品有坂深雪| 亚洲国产精品一区二区久久hs| 久久精品人妻中文系列| 区久久AAA片69亚洲| 亚洲欧洲日产国码无码久久99|