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

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

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

    Live a simple life

    沉默(zhu_xing@live.cn)
    隨筆 - 48, 文章 - 0, 評論 - 132, 引用 - 0
    數(shù)據(jù)加載中……

    設(shè)計模式雜談

            原來不經(jīng)常逛技術(shù)論壇,最近閑著看的比較多一點,看到了相當(dāng)?shù)膬?nèi)容是在討論設(shè)計模式的東西。今天,也閑侃一下

            1、設(shè)計模式的角色是什么?  工具而已,而且不是一個很高級的工具,更不是一個全能的工具。什么時候決定使用設(shè)計模式呢,有需求,是你決定好了要干什么,接著才考慮怎么去實現(xiàn)它,讓設(shè)計模式幫你去實現(xiàn)!!!舉個例子,例如你要做的系統(tǒng)中的某個模塊,基于的數(shù)據(jù)來自于xml文件,思考之后,你需要基于xml文件去建立你的業(yè)務(wù)模型對象。那怎么合理的來封裝這種實現(xiàn)呢? 這個時候,你可能自然地去選擇用Composite模塊去封裝這種樹狀類型體系。 那你接著會看到,這個樹形對象的構(gòu)造挺繁瑣的,你不希望用戶去完成這些工作,那么你可能會想到去封裝這種實例化過程,各種創(chuàng)建型模式選擇之后,你可能選擇了工廠模式。  數(shù)據(jù)有了,你可能接下來去實現(xiàn)核心的業(yè)務(wù)行為了,相當(dāng)多的業(yè)務(wù)行為是基于前面你封裝的樹性對象結(jié)構(gòu)之上。 你寫的行為多了之后,你可能覺得數(shù)據(jù)結(jié)構(gòu)本身和這么多行為沾粘在了一起,你可能想,干脆將它們分開算了(雖然這樣有點打破封裝),怎么很好的分開呢? 這個時候你可能自然的去用了vistor模式...

            2、如何去大致評估設(shè)計模式是否被正確使用了呢?  個人的經(jīng)驗是從需求、設(shè)計原則、設(shè)計模式本身兩個層面來判斷。所謂需求來判斷,就是你使用這個設(shè)計模式是否在解決實際需求,是否是為了設(shè)計模式而設(shè)計模式。例如你可能用某個模式是為了以后更容易擴展,那么你看了,你的這種需求是真的存在的嗎?哪怕真的存在,需求有那么大嗎?  所謂的基于設(shè)計原則判斷,則是從技術(shù)角度在宏觀上做個評審~_~。例如直覺告訴你抽象層面的東西和實現(xiàn)層面的東西耦合在一塊了,例如你設(shè)計了一個狂大的接口等等...   設(shè)計模式的不恰當(dāng)使用,會使得代碼變得更加不優(yōu)雅,也會增加很多不必要的復(fù)雜度。  所謂從設(shè)計模式本身來判斷,則是以技術(shù)視角去審核一下你用這個模式的場景和模式本身使用的創(chuàng)建是否有差異,基本上每個模式的使用都會引來一些對應(yīng)的副作用,那么你要看一下這種副作用恰恰是你所不能接受的...

            3、如果你是單純的在設(shè)計階段,設(shè)計模式能幫助你什么呢?  個人經(jīng)驗,無論是處在那個設(shè)計階段,對設(shè)計模式有較好的理解會有助你設(shè)計的時候思考問題,甚至更好的幫助你將業(yè)務(wù)需求轉(zhuǎn)換為技術(shù)需求,并合理的處理這些技術(shù)需求,進(jìn)一步轉(zhuǎn)為具體的設(shè)計方案。但是要注意是有助于,絕對不是基于設(shè)計模式。  例如做概要設(shè)計的時候,精力還是集中在模塊劃分、模塊提供的主要服務(wù)、模塊之間的交互方式等。  進(jìn)行詳細(xì)設(shè)計的時候,設(shè)計模式扮演的角色才會稍微更重一點。設(shè)計階段滿腦子設(shè)計模式,你可能會有兩個下場:一是過度設(shè)計,而是錯誤設(shè)計。   

            4、設(shè)計模式和重構(gòu)?  設(shè)計模式基本上可以理解為是一個代碼級別的設(shè)計工具,同時也是重構(gòu)時候的較為高級的手段。具體的,建議有時間可以看一下《重構(gòu)與模式》,可能會有點體會。重構(gòu)在一定程度上可以修正設(shè)計不足(個人覺得僅僅是一定程度),也能修理掉過度設(shè)計。

            5、設(shè)計模式在學(xué)習(xí)過程中處于什么階段?  個人覺得基本上是如下路線:基礎(chǔ)知識、具體開發(fā)語言、語言層面技巧、設(shè)計模式、設(shè)計原則....(俺就是一個寫代碼的,再往下實在是不會了,更高層次的方法論沒有接觸過^_^)   學(xué)習(xí)的手段可以分為:經(jīng)典書籍、實踐經(jīng)驗、高手教誨等等。 國內(nèi)作者寫的書有時間可以撒兩眼(不是說高手少,而是高手一般可能不會去寫書,丟不起那人^_^),沒時間就算了,要讀就讀經(jīng)典。  實踐經(jīng)驗是無論如何無法取代的,保證認(rèn)真地態(tài)度去寫代碼,寫的時候瞎想想,見到好的代碼模仿模仿。   高手教誨就不用說了,如果你的團隊中有經(jīng)驗老練的高手,那你非常幸運,成天不恥下問吧。  基礎(chǔ)不扎實,會導(dǎo)致典型的就設(shè)計模式而設(shè)計模式,這種人論壇上還很多的。  沒接觸設(shè)計模式的時候,你感覺寫代碼很流利;接觸一些后,你肯定會覺得自己滿腦子設(shè)計模式,不會寫代碼了,寫的時候老想著是否該用這個模式或者該用那個模式...;再過一段時間,基于設(shè)計模式的使用經(jīng)驗和理解增多,你有會比較流利,你會有點自豪,覺得你是和大部分在不同層面上寫代碼;  再過一段時間,你可能會接觸一些設(shè)計原則的東西,你有麻煩了,又覺得肯能不怎么會寫代碼了,因為你腦子里想著很多松耦合、基于接口、開閉等等東西,老懷疑你設(shè)計模式用的對嗎,要不干脆不用了....;  再過一段時間,應(yīng)該會恢復(fù)了,你可能又會有點自豪了,你會覺得你用模式是在設(shè)計原則指導(dǎo)之下使用的,而且這個時候你會覺得設(shè)計模式可以用的很活,多個模式之間的配合等等也是很自然的事情,因為這個時候你腦子想的更多的是設(shè)計模式對應(yīng)的場景和副作用等等,而不是之前滿腦子設(shè)計模式相關(guān)的實現(xiàn)細(xì)節(jié)了

            6、設(shè)計模式真的能成為寫代碼的人之間的交流語言?   如果能這樣,你可能在一個素質(zhì)很高的團隊,羨慕你,實在是羨慕你!!!    一般別抱這種幻想,也別去強迫其他人使用設(shè)計模式,否則你可能會挨罵^_^。我的感覺是與其讓我遇到一個連設(shè)計模式都沒有聽說過的人,也不希望遇到一個滿口設(shè)計模式去不會真正用設(shè)計模式的人,那是很折磨人的^_^


            7、。。。。

            8、。。。。

    本博客中的所有文章、隨筆除了標(biāo)題中含有引用或者轉(zhuǎn)載字樣的,其他均為原創(chuàng)。轉(zhuǎn)載請注明出處,謝謝!

    posted on 2008-09-08 11:55 zhuxing 閱讀(2011) 評論(3)  編輯  收藏 所屬分類: 設(shè)計雜談

    評論

    # re: 設(shè)計模式雜談  回復(fù)  更多評論   

    剛寫這篇閑侃,比平時吃飯晚了10分鐘。 該吃過飯去小超時買煙,眼看著最后一包紅雙喜被另外一個哥們買去了,剩下的只有中華和幾種很爛的煙了。 思考再三,拿了包爛的
    2008-09-08 12:37 | zhuxing

    # re: 設(shè)計模式雜談  回復(fù)  更多評論   

    模式的使用時需要經(jīng)驗的積累的,看看書無濟于事
    2008-09-08 12:52 | Jack.Wang

    # re: 設(shè)計模式雜談  回復(fù)  更多評論   

    @Jack.Wang
    看書(當(dāng)然要是好書)和經(jīng)驗缺一不可,看書有助于更好、更快的積累有價值的經(jīng)驗,最后寫代碼的時候,發(fā)揮作用的肯定是經(jīng)驗。

    想靠自己的實踐積累出來一些經(jīng)典書上面的結(jié)論,顯然有點高估自己了^_^ 但是實踐積累肯定能夠更好地理解書本內(nèi)容,感覺有點不一樣了哈
    2008-09-08 17:20 | zhuxing
    主站蜘蛛池模板: 亚洲一级毛片视频| 亚洲AV成人无码久久精品老人 | 九九免费观看全部免费视频| 9久9久女女免费精品视频在线观看| 日韩免费a级毛片无码a∨| 日韩特黄特色大片免费视频| 亚洲人成免费网站| 一个人在线观看视频免费| 亚洲熟女精品中文字幕| 大陆一级毛片免费视频观看 | 亚洲影院天堂中文av色| 一级毛片免费不卡直观看| 伊在人亚洲香蕉精品区麻豆| 久久国产亚洲精品无码| 99视频在线精品免费| 亚洲熟妇无码爱v在线观看| 美女被吸屁股免费网站| 免费人成在线观看播放国产 | 丰满人妻一区二区三区免费视频| 成人免费大片免费观看网站| 亚洲第一成年网站大全亚洲| 一本无码人妻在中文字幕免费| 亚洲春色在线视频| xxxx日本免费| 亚洲一区二区女搞男| 91av免费观看| 亚洲精品一卡2卡3卡四卡乱码| 人人揉揉香蕉大免费不卡| 国产片免费福利片永久| 国产免费A∨在线播放| 亚洲资源在线观看| 日本xxwwxxww在线视频免费| 亚洲免费视频一区二区三区| 亚洲视频在线观看免费| 免费国产成人α片| 亚洲熟妇无码乱子AV电影| 中国人xxxxx69免费视频| 在线观看亚洲免费| 久久亚洲国产精品五月天| 成人免费一区二区三区在线观看| 亚洲制服丝袜一区二区三区|