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

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

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

    莊周夢(mèng)蝶

    生活、程序、未來(lái)
       :: 首頁(yè) ::  ::  :: 聚合  :: 管理

    java package的設(shè)計(jì)原則

    Posted on 2008-09-06 00:15 dennis 閱讀(2997) 評(píng)論(3)  編輯  收藏 所屬分類(lèi): java
        典型的J2EE項(xiàng)目,package的設(shè)計(jì)有成熟的套路可循,如分為domain、dao、service、action等等,職責(zé)已經(jīng)分解的比較單一和清晰,循環(huán)依賴這樣的情況出現(xiàn)并不多。而在一般的java項(xiàng)目,如服務(wù)器程序、客戶端程序和通用性框架的開(kāi)發(fā)中,包的設(shè)計(jì)并沒(méi)有套路可循,畢竟由于應(yīng)用和業(yè)務(wù)種類(lèi)的不同,想得出通用性的設(shè)計(jì)套路是不大可能的。這時(shí)候遵循一些原則比之生搬硬套更為重要。在《敏捷軟件開(kāi)發(fā)》一書(shū)中對(duì)包的設(shè)計(jì)有深入的討論,雖然針對(duì)的是發(fā)布的二進(jìn)制包而言,但是對(duì)于java package的設(shè)計(jì)同樣有借鑒意義,如對(duì)包的內(nèi)聚性、可重用性、穩(wěn)定性的強(qiáng)調(diào),對(duì)于依賴的探討,這些都是比較籠統(tǒng)的概念,不是那么直觀,需要在實(shí)際運(yùn)用中認(rèn)真歸納和重構(gòu),向這些原則靠攏。
       我所想到一個(gè)比較直觀的方法就是:對(duì)于一個(gè)包的描述,你是否能用一句簡(jiǎn)明扼要的話概括,也就是包的功能或者說(shuō)介紹能否做到簡(jiǎn)明扼要,這是衡量一個(gè)包的設(shè)計(jì)是否合理的最簡(jiǎn)單的方法。如果可以,顯然這個(gè)包的內(nèi)聚性很好,所有的類(lèi)都服務(wù)于一個(gè)目的,從而帶來(lái)了重用的可能(其實(shí)我對(duì)重用性并不感冒,除了工具類(lèi)外真正能重用的東西少之又少,內(nèi)聚性才是需要關(guān)注的);反之,這個(gè)包可能承擔(dān)了太多的職責(zé)或者依賴過(guò)多,仔細(xì)的重構(gòu)和分離是需要做的。包的設(shè)計(jì)同樣要遵循接口分離的原則,將接口與實(shí)現(xiàn)隔離在不同的包之中,客戶程序就不會(huì)知道具體的實(shí)現(xiàn),并且也保證了實(shí)現(xiàn)對(duì)接口的單向依賴。當(dāng)然,這時(shí)就需要引入工廠類(lèi)、插件或者IOC容器來(lái)負(fù)責(zé)實(shí)例化實(shí)現(xiàn)類(lèi)。

    評(píng)論

    # re: java package的設(shè)計(jì)原則  回復(fù)  更多評(píng)論   

    2008-09-06 10:06 by Jack.Wang
    接口與實(shí)現(xiàn)隔離在不同的包之中是個(gè)比較好的實(shí)踐,贊同。
    關(guān)注點(diǎn)分離永遠(yuǎn)是軟件開(kāi)發(fā)架構(gòu)的重點(diǎn),LZ說(shuō)重用甚少,開(kāi)發(fā)軟件如果架構(gòu)允許的話我們都會(huì) import 第三方組件,such as apache commons and so on. commons 重用的原因是因?yàn)楹蜆I(yè)務(wù)無(wú)關(guān),沒(méi)有依賴性,當(dāng)然和業(yè)務(wù)有關(guān)的也可以重用,這也就是 SOA 的理念之一了。

    # re: java package的設(shè)計(jì)原則  回復(fù)  更多評(píng)論   

    2008-09-07 22:19 by dennis
    @Jack.Wang
    重用的粒度問(wèn)題,而我說(shuō)談的重用局限在代碼級(jí)別的重用。

    # re: java package的設(shè)計(jì)原則  回復(fù)  更多評(píng)論   

    2008-09-08 10:11 by zhuxing
    贊同樓主觀點(diǎn),包的設(shè)計(jì)應(yīng)該是在通用的設(shè)計(jì)原則的指導(dǎo)下完成

    應(yīng)該以很多個(gè)維度來(lái)綜合地看待這個(gè)問(wèn)題,盡量考慮到各個(gè)規(guī)則(例如盡量分離抽象和實(shí)現(xiàn),更好的遵循開(kāi)閉原則....),不要和經(jīng)典的規(guī)則發(fā)生沖突~_~

    有的人可能更喜歡從技術(shù)視角進(jìn)行劃分,例如可能會(huì)出現(xiàn)**.factory類(lèi)型的包,里面放置了供用戶調(diào)用的工程類(lèi);有的人則可能更喜歡從業(yè)務(wù)角度進(jìn)行劃分等。

    大的原則是存在的,具體細(xì)節(jié)因人而異 ^_^。
    主站蜘蛛池模板: jzzijzzij在线观看亚洲熟妇| 激情内射亚洲一区二区三区| 亚洲最大av资源站无码av网址| 1000部拍拍拍18勿入免费凤凰福利 | 久久亚洲日韩精品一区二区三区| 999zyz**站免费毛片| 亚洲精品国产精品乱码视色| 久久国产乱子伦精品免费强| 亚洲AV日韩AV鸥美在线观看| 久久久久久久岛国免费播放| 亚洲天堂视频在线观看| 国产成人精品免费视频大| 亚洲一区二区三区免费观看| 成人免费无码大片A毛片抽搐色欲| 亚洲另类自拍丝袜第五页| 免费在线观看中文字幕| 中文字幕久无码免费久久| 亚洲国产女人aaa毛片在线| 一二三四在线观看免费高清中文在线观看 | 青青草97国产精品免费观看| 久久亚洲国产精品五月天婷| 久草免费手机视频| 国产精品亚洲自在线播放页码| 麻豆国产精品入口免费观看| 久久久久久国产a免费观看不卡 | 国产AV无码专区亚洲AV漫画| 美女内射无套日韩免费播放 | 亚洲www在线观看| 波多野结衣一区二区免费视频| fc2成年免费共享视频18| 亚洲男人第一av网站| 成人毛片免费观看视频大全| 一级看片免费视频| 亚洲国产精品久久久久秋霞影院| 日本特黄特色aa大片免费| a视频在线观看免费| 国产亚洲sss在线播放| 亚洲精品V欧洲精品V日韩精品| 一二三四在线播放免费观看中文版视频 | 亚洲网站在线免费观看| 特级毛片免费观看视频|