<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Roger Tu

    A simple boy living a simple life in every simple day...

       ::  :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      7 隨筆 :: 0 文章 :: 19 評(píng)論 :: 0 Trackbacks

    好的系統(tǒng)設(shè)計(jì)追求如下特性:

    •   可擴(kuò)展性(Extensibility):新的功能或特性很容易加入到系統(tǒng)中來;
    •   靈活性(Flexibility):可以允許代碼修改平穩(wěn)發(fā)生,對(duì)一處的修改不會(huì)波及到很多其他模塊;
    •   可插入性(Pluggability):可以很容易地將一個(gè)類或組件抽出去,同時(shí)將另一個(gè)有相同接口的類/接口加入進(jìn)來。

       具有如上特性的系統(tǒng)才有真正的可維護(hù)性和可復(fù)用性。而可維護(hù)性和可復(fù)用性對(duì)一個(gè)持續(xù)接入新需求,現(xiàn)有功能逐步完善,新功能不斷豐富,版本不會(huì)終止的大型軟件產(chǎn)品來說至關(guān)重要。

       傳統(tǒng)的復(fù)用包括:代碼的copy復(fù)用,算法的復(fù)用,數(shù)據(jù)結(jié)構(gòu)的復(fù)用。

       在面向?qū)ο箢I(lǐng)域,數(shù)據(jù)的抽象化、封裝、繼承和多態(tài)性是幾項(xiàng)最重要的語(yǔ)言特性,這些特性使得一個(gè)系統(tǒng)可以在更高的層次上提供可復(fù)用性。數(shù)據(jù)的抽象化和繼承關(guān)系使得概念和定義可以復(fù)用;多態(tài)性使得實(shí)現(xiàn)和應(yīng)用可以復(fù)用;而抽象化和封裝可以保持和促進(jìn)系統(tǒng)的可維護(hù)性。這樣,復(fù)用的焦點(diǎn)不再集中在函數(shù)和算法等具體實(shí)現(xiàn)細(xì)節(jié)上,而是集中在最重要的宏觀的業(yè)務(wù)邏輯的抽象層次上。復(fù)用焦點(diǎn)的倒轉(zhuǎn)不是因?yàn)閷?shí)現(xiàn)細(xì)節(jié)的復(fù)用不再重要,而是因?yàn)檫@些細(xì)節(jié)上的復(fù)用往往已經(jīng)做的很好(例如,很容易找到并應(yīng)用成熟的數(shù)據(jù)結(jié)構(gòu)類庫(kù)等),而真正沖擊系統(tǒng)的是其要實(shí)現(xiàn)業(yè)務(wù)的千變?nèi)f化。

       本質(zhì)上說,如果說一個(gè)軟件的需求是永不變更或發(fā)展的,該軟件也就不需要任何設(shè)計(jì),怎么編碼實(shí)現(xiàn)都行,只要需求滿足,性能達(dá)標(biāo)。但事實(shí)上,軟件的本性就是不斷增強(qiáng),不斷擴(kuò)展,不斷變化的。我們可以控制指尖流淌出的每行代碼,但控制不了奉為上帝的用戶的需求。編碼結(jié)束,測(cè)試通過,用戶在使用過程中才發(fā)現(xiàn)原來的需求有問題,要變更需要或提出新需求,怎么辦?向用戶抗議:需求總在變,沒法做!?平抑心中的抱怨,加班加點(diǎn)大量的修改代碼,瘋狂的測(cè)試,依然是時(shí)間緊迫,心中沒底?抑或了然于胸:這個(gè)變更或新需求合理,系統(tǒng)很方便納入;于是坦然地和用戶協(xié)商下一個(gè)交付時(shí)間點(diǎn)?

       要使系統(tǒng)最大程度的適應(yīng)需求的變更或新增,就必須在其要實(shí)現(xiàn)的宏觀業(yè)務(wù)邏輯的抽象復(fù)用上下功夫。而設(shè)計(jì)模式就是綜合運(yùn)用面向?qū)ο蠹夹g(shù)和特性來提高業(yè)務(wù)邏輯可復(fù)用性的常用方法和經(jīng)驗(yàn)的提取和匯總。掌握23種設(shè)計(jì)模式的關(guān)鍵是理解它們的共通目的:使所設(shè)計(jì)的軟件系統(tǒng)在一般或特定(系統(tǒng)將來在特定點(diǎn)上需要擴(kuò)展的可能性大)場(chǎng)景下,盡可能的對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。即面對(duì)新需求或需求變更,容易開發(fā)獨(dú)立于既有代碼的新代碼接入到現(xiàn)有系統(tǒng)或?qū)ΜF(xiàn)有代碼做可控的少量修改,而不是在現(xiàn)有代碼基礎(chǔ)上做大量的增、刪、改。為了這一目的,23種設(shè)計(jì)模式貫穿了面向?qū)ο缶幊痰幕驹瓌t:

    •    面向接口或抽象編程,而不是面向?qū)崿F(xiàn)編程。
    posted on 2007-03-23 00:25 RogerTu 閱讀(1999) 評(píng)論(2)  編輯  收藏 所屬分類: Programming Thought

    評(píng)論

    # re: 設(shè)計(jì)模式基本思想 2007-03-23 03:34 喜來樂哈哈
    >> 盡量不要使用繼承,而是使用組合

    組合并不一定優(yōu)于繼承,該用繼承的時(shí)候還是要用繼承的,特別是當(dāng)滿足Substitution原理時(shí)。

    以前的OO界過于強(qiáng)調(diào)繼承,現(xiàn)在則過于強(qiáng)調(diào)組合。其實(shí)任何一個(gè)OO的系統(tǒng)都使用到繼承和組合。

      回復(fù)  更多評(píng)論
      

    # re: 設(shè)計(jì)模式基本思想 2009-05-23 19:14 cxf
    寫的不錯(cuò)。  回復(fù)  更多評(píng)論
      


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲色最新高清av网站| 久久精品国产亚洲av麻豆蜜芽| 久久精品国产亚洲AV| 免费毛片在线播放| 亚洲人成自拍网站在线观看| 免费高清小黄站在线观看| 亚洲色偷偷色噜噜狠狠99网| 毛片在线免费视频| 亚洲国产日韩a在线播放| 永久久久免费浮力影院| 亚洲日韩AV无码一区二区三区人| 无码高潮少妇毛多水多水免费| 亚洲中文字幕久久久一区| 免费观看毛片视频| 免费国产va在线观看| 亚洲午夜爱爱香蕉片| www在线观看免费视频| 国产V亚洲V天堂无码久久久| 男人j进入女人j内部免费网站| 亚洲精品福利视频| 日韩精品无码区免费专区| 亚洲精品第一国产综合亚AV| 免费jjzz在线播放国产| 国产真人无码作爱免费视频| 亚洲成在人天堂一区二区| 成年女人看片免费视频播放器 | 亚洲五月六月丁香激情| 999任你躁在线精品免费不卡| 亚洲一区二区三区免费观看| 在线jlzzjlzz免费播放| 黄色网页在线免费观看| 亚洲成人一级电影| 国产午夜鲁丝片AV无码免费| 两个人看www免费视频| 亚洲冬月枫中文字幕在线看| 亚洲av日韩片在线观看| 免费A级毛片无码A∨中文字幕下载 | 你是我的城池营垒免费观看完整版 | 成人免费淫片在线费观看| 精品熟女少妇aⅴ免费久久| 亚洲精品亚洲人成在线观看麻豆|