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

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

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

    冰浪

    哥已不再年輕 - 堅(jiān)定夢想,畢生追求!
    posts - 85, comments - 90, trackbacks - 0, articles - 3
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    包結(jié)構(gòu)也要精心設(shè)計(jì)

    Posted on 2007-07-26 20:46 冰浪 閱讀(1167) 評論(2)  編輯  收藏 所屬分類: Java

         今天開始做一個(gè)新的模塊,叫“時(shí)限監(jiān)察”,這個(gè)模塊的功能是要對“辦件處理”的處理情況進(jìn)行一個(gè)監(jiān)察工作。也就是說兩者是緊密相關(guān)的。而我要做的工作就是針對辦件處理的結(jié)果或者說是記錄進(jìn)行一個(gè)過濾匯總,并對有關(guān)的記錄進(jìn)行處理。如某些辦件未能按時(shí)處理的,我就可以對此辦件記錄進(jìn)行通知,提醒相關(guān)人員進(jìn)行處理。
        首先說明一點(diǎn)的是,有一個(gè)VO對象,在公司的產(chǎn)品開發(fā)框架中是一個(gè)值對象,但這個(gè)值對象并不是簡單功能角色上的VO,而即做為數(shù)據(jù)持久化操作中與數(shù)據(jù)庫表進(jìn)行對象關(guān)系映射的ORM Object,也是作用顯示層中的View Object,在這里我不討論此設(shè)計(jì)的優(yōu)缺點(diǎn),這不是我要說的方面。
        在辦件處理模塊,某同事已經(jīng)創(chuàng)建了對應(yīng)的VO,在這里我稱之為APVO吧,而我在時(shí)限監(jiān)察模塊也需要用到它數(shù)據(jù)表中的數(shù)據(jù),進(jìn)行辦件情況的列表顯示,所以APVO對我而言是很有利用價(jià)值的,如果我能利用它,那我就需要重復(fù)創(chuàng)建此VO(或者說是其中大部分屬性)的工作了。對于此,我首先想到的是創(chuàng)建一個(gè)自己模塊的LMVO,并繼承APVO,這樣,我既可以擁有自己的私有成員,也可利用到APVO中的所需要成員屬性。如果這要求能夠?qū)崿F(xiàn),那么我就可減少不少工作量,而對于面向?qū)ο箝_發(fā)方法中也是常見的情況。
        正當(dāng)我這么做時(shí),卻發(fā)現(xiàn)了一個(gè)問題,APVO中的成員屬性的訪問域全是“private”類型的,這讓我大失所望,我無法繼承這些成員屬性!
        一般情況下,我們都習(xí)慣性將類成員變量的訪問域設(shè)為private類型,然后提供Setter和Getter方法,這樣的做法,我們也通常認(rèn)為是比較安全的作法,是符合封裝性要求的。但這樣的做法,讓很多沒有必要進(jìn)行private封裝的成員變量永遠(yuǎn)地失去了再利用的可能。在這種情況下,如果我還是不想重寫這些成員變量的話,就只能是直接用APVO,并在其中加入我更多的成員變量,但這并不我所希望的。也許你會(huì)說,“不用繼承,可以用組合,而且組合優(yōu)于繼承,不是嗎?”這句話本沒有錯(cuò),一般情況下可以這么法,而且最好這么做。但在某些情況,組合無法實(shí)現(xiàn)我的要求,就像在公司的開發(fā)框架中就無法進(jìn)行,VO中的成員變量只能是簡單的數(shù)據(jù)類型,如String,這樣在進(jìn)行數(shù)據(jù)庫操作時(shí)可以順利地對其取值和賦值,但如果組合了另一個(gè)VO對象的話,這個(gè)VO對象卻無法進(jìn)行取值和賦值。
         所以,在設(shè)計(jì)類時(shí),要考慮到類的復(fù)用,所以對其成員變量的訪問域控制上,不要一概地設(shè)成private。我們可以設(shè)為protected或者是默認(rèn)訪問類型。單是這么做并不夠,我們還是要考慮安全性,也就是訪問控制。所以我們還要對其所在的包的結(jié)構(gòu)進(jìn)行設(shè)計(jì)。
         我們不要簡單地按功能模塊的方式來設(shè)計(jì)包,要考慮到模塊間的邏輯關(guān)系,讓有關(guān)系的模塊的包設(shè)計(jì)成“父子包”的形式,而不是按功能模塊簡單地設(shè)計(jì)成平行結(jié)構(gòu),這不利于類之間的交互,也只有這樣,我們在前面說的設(shè)計(jì)類成員變量的訪問域才變得有意義。
         如前面我提到的例子,我可以將我自己的包置于APVO所在包的子包下,再讓APVO的成員變量的訪問域聲明為protected,此時(shí)我將自己的LMVO繼承APVO,這不再行不通了!


    評論

    # re: 包結(jié)構(gòu)也要精心設(shè)計(jì)  回復(fù)  更多評論   

    2007-07-27 09:11 by Robin's Java World
    不知所雲(yún).

    # re: 包結(jié)構(gòu)也要精心設(shè)計(jì)  回復(fù)  更多評論   

    2007-07-27 11:30 by dennis
    adapter or wrapper
    主站蜘蛛池模板: 免费一级毛片无毒不卡| 成人网站免费大全日韩国产| 18国产精品白浆在线观看免费 | 亚洲一区二区三区香蕉| 无码日韩人妻AV一区免费l | 亚洲精品蜜夜内射| 永久免费bbbbbb视频| 亚洲熟伦熟女专区hd高清| 毛片免费观看网站| 国产成人亚洲精品91专区高清| 四只虎免费永久观看| 深夜免费在线视频| 亚洲狠狠婷婷综合久久久久| 暖暖在线视频免费视频| 亚洲黄色网址在线观看| 波多野结衣在线免费观看| 亚洲日韩AV一区二区三区四区| 麻豆国产人免费人成免费视频| 立即播放免费毛片一级| 在线观看亚洲av每日更新| 手机看片国产免费永久| 亚洲经典在线观看| 国产成人高清精品免费软件| 一级毛片大全免费播放下载| 亚洲av综合avav中文| 国产成人精品免费视频动漫 | 全免费A级毛片免费看网站| 日韩精品无码免费视频| 亚洲日韩精品无码专区网址| 真实国产乱子伦精品免费| 色偷偷女男人的天堂亚洲网| 丁香亚洲综合五月天婷婷| 无码国产精品一区二区免费3p| 亚洲一区免费在线观看| 免费二级毛片免费完整视频| 国产一区二区免费| 亚洲AV成人片无码网站| 亚洲爱情岛论坛永久| 日韩在线天堂免费观看| 中文字幕免费在线观看动作大片| 亚洲精品欧洲精品|