<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é)因人而異 ^_^。
    主站蜘蛛池模板: 亚洲 日韩 色 图网站| 亚洲精品福利网站| 国产免费一区二区视频| 亚洲理论精品午夜电影| 成人永久免费高清| 伊人免费在线观看高清版| 亚洲黄色在线观看| 免费a级毛片无码a∨性按摩| 永久免费av无码网站yy| 亚洲av无码不卡久久| 国产亚洲av片在线观看18女人| 国产va在线观看免费| 亚洲熟妇丰满xxxxx| 久久精品国产亚洲AV麻豆王友容| 在线观看无码AV网站永久免费| 国产亚洲精品成人久久网站| 亚洲男人天堂av| 免费成人在线观看| 人成午夜免费视频在线观看| 一级毛片视频免费| 亚洲成年网站在线观看| 亚洲AV无码精品色午夜果冻不卡 | 亚洲最新在线视频| 亚洲男人在线无码视频| 99xxoo视频在线永久免费观看| 春暖花开亚洲性无区一区二区| 亚洲综合区图片小说区| 亚洲精品国产日韩无码AV永久免费网| 国产成人免费高清激情明星| 中文字幕视频在线免费观看| 国产成人不卡亚洲精品91| 激情亚洲一区国产精品| 亚洲成Av人片乱码色午夜| 亚洲Aⅴ无码一区二区二三区软件| 国产成人免费高清激情明星| 无码人妻AV免费一区二区三区| h视频免费高清在线观看| 亚洲日韩精品无码AV海量| 亚洲视频一区调教| 欧洲亚洲国产清在高| 亚洲一区精品伊人久久伊人|