• <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>
            來自http://m.shnenglu.com/cool-liangbing/archive/2008/05/13/49729.html
            記得2004年剛接觸設(shè)計模式,買了經(jīng)典的<<設(shè)計模式>>一書,細(xì)細(xì)地閱讀,然后在開發(fā)中模仿。一兩年時間過去,對23種設(shè)計 模式弄得還算比較熟悉,也在軟件設(shè)計中能用則用,比如Singleton, template method, proxy, facade等等。但總感覺用的不爽,當(dāng)時也說不出原因;就是感覺在使用的過程中,是一種為了使用設(shè)計模式而使用上他們,有時候是生搬硬套。總之,自己當(dāng) 時是搞不清楚為什么要使用設(shè)計模式,停留在別人說它牛,我就學(xué)著用而不落人之后。
                我不是一個天質(zhì)聰穎的人,對軟件設(shè)計的理解,基本上無法評自己能力單獨領(lǐng)悟出來。只有常常督促自己多買國內(nèi)外軟件專家寫的好書,來學(xué)習(xí)他們在這些方面的發(fā)現(xiàn)和總結(jié)。靠后天學(xué)習(xí)來彌補先天不足,也是沒有辦法中的辦法。
                終于在2007年看到了<<java與模式>>, 書中對設(shè)計模式的討論,并沒有特別吸引我的地方,不過是用java語言來詳細(xì)講解23種模式而已,最多增加一些變體。深深吸引我的是"第二部分 面向?qū)ο蟮脑O(shè)計原則", 這一部分雖然篇幅不多,但清晰地說明了我們?yōu)槭裁匆迷O(shè)計模式,使用設(shè)計模式是來解決什么問題的,使用之后我們要達(dá)到什么效果。軟件的生命周期讓我們認(rèn)識 到,面向?qū)ο蟮脑O(shè)計要解決的核心問題是可維護性和可復(fù)用性,特別是可維護性,一個好軟件的維護成本遠(yuǎn)遠(yuǎn)大于初期開發(fā)成本。
                一個軟件設(shè)計的可維護性很差,原因在于:過于僵硬、過于脆弱、復(fù)用率低、黏度過高。相反,一個好的系統(tǒng)設(shè)計應(yīng)該是可擴展的、靈活的、可插入的。在軟件發(fā)達(dá) 國家如美國,一些軟件界的高手,在20世紀(jì)80~90年代,就陸續(xù)提出一些設(shè)計原則,這些設(shè)計原則是在提高一個系統(tǒng)的可維護性的同時,提高系統(tǒng)的可復(fù)用性 的指導(dǎo)原則:
                1、開閉原則:軟件架構(gòu)應(yīng)該是對擴展開發(fā),對修改關(guān)閉
                2、Liskov替換原則:任何基類可以出現(xiàn)的地方,子類一定可以出現(xiàn)
                3、依賴倒轉(zhuǎn)原則:要依賴于抽象,不要依賴于實現(xiàn)
                4、接口隔離原則:應(yīng)當(dāng)為客戶提供盡可能小的接口,而不是提供大的接口。
                5、組合、聚合復(fù)用原則:要盡量使用組合、聚合,而不是繼承關(guān)系以達(dá)到復(fù)用的目的。
                6、Demeter法則:一個軟件實體應(yīng)該與盡可能少的其他實體發(fā)生互相作用。
                可以說,<<java與模式>>里很好的解決了我心中兩三年來的不快,讓我真正理解了為什么要使用設(shè)計模式。軟件開發(fā)、設(shè)計原則 與設(shè)計模式的關(guān)系,我不恰當(dāng)?shù)谋扔鳛閼?zhàn)爭、戰(zhàn)略與戰(zhàn)術(shù)的關(guān)系;要取得戰(zhàn)爭的全面勝利,你首先要在戰(zhàn)略上把握好,然后才是戰(zhàn)術(shù)上指揮好;同樣,要開發(fā)出好的 軟件,我們首先要遵循一定的設(shè)計原則,為了達(dá)到我們的目的,在開發(fā)中我們就恰當(dāng)?shù)氖褂孟鄳?yīng)的設(shè)計模式。
                <<java與模式>>寫的好,而且是中國人寫的,但它缺少了一個方面的描述:我們怎樣在實際的設(shè)計開發(fā)中做到這些呢?是不是一開始就要遵循這些設(shè)計原則,就要使用設(shè)計模式?還是有一個什么樣的過程?
                終于今年初看到了英文版<<敏捷軟件開發(fā):原則、模式與實踐>>, 國外這些大牛就是大牛,在這方面就是理解深刻,實踐經(jīng)驗豐富。作者的觀點很有點唯物辨證法,就是軟件設(shè)計開始時,我們?nèi)绻麤]有看出抽象的必要,可以先實現(xiàn) 一個簡單的,當(dāng)?shù)谝淮伪恍枨笥|發(fā)而顯現(xiàn)出抽象的必要時,我們這時機會就來了,需要很快提取抽象接口,遵循以上設(shè)計原則。當(dāng)然,作者還有很多其它好的思想, 這里不一一列舉。
                認(rèn)識和理解都需要一個過程,沒有理論,我們這些智商一般的人是很難僅僅在項目開發(fā)中盡快提高的;同樣,光看書不實踐,我們也很難真正理解這些別人總結(jié)的經(jīng)驗,那將是霧里看花。
                豐富經(jīng)驗和軟件設(shè)計思想以及軟件工程思想,對軟件開發(fā)的重要性真的是如此重要,怪不得我們國家無法開發(fā)出大型的高質(zhì)量的軟件來。

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

            Copyright © RichardHe

            色天使久久综合网天天| 久久人妻少妇嫩草AV无码专区| 久久国产精品成人影院| 国产精品对白刺激久久久| 国产午夜福利精品久久2021 | 精品久久久久久久久久久久久久久| 久久久精品一区二区三区| 丰满少妇人妻久久久久久4| 中文字幕精品久久| 国产91色综合久久免费分享| 久久亚洲国产精品123区| 久久久久亚洲AV成人片| 久久久久亚洲?V成人无码| 色婷婷久久综合中文久久蜜桃av| 久久亚洲综合色一区二区三区| 久久受www免费人成_看片中文| 久久久噜噜噜久久熟女AA片 | 久久人人爽人人爽人人片AV不| 91精品国产高清久久久久久国产嫩草 | 亚洲国产成人乱码精品女人久久久不卡| AV无码久久久久不卡蜜桃| 国产精品丝袜久久久久久不卡| 久久久久av无码免费网| 欧美日韩精品久久久免费观看 | 久久精品无码一区二区app| 久久香综合精品久久伊人| 亚洲一区精品伊人久久伊人 | 精品熟女少妇av免费久久| 久久久久久国产精品免费免费| 久久99国产精品二区不卡| 色诱久久久久综合网ywww | 精品久久久久久99人妻| 久久精品国产久精国产| 久久99精品国产| 日本福利片国产午夜久久| 精品熟女少妇av免费久久| 久久久亚洲欧洲日产国码二区| 九九精品99久久久香蕉| 久久不见久久见免费视频7| www性久久久com| 狠狠色丁香婷婷久久综合不卡 |