PO是持久化對(duì)象,它只是將物理數(shù)據(jù)實(shí)體的一種對(duì)象表示,為什么需要它?因?yàn)樗梢院?jiǎn)化我們對(duì)于物理實(shí)體的了解和耦合,簡(jiǎn)單地講,可以簡(jiǎn)化對(duì)象的數(shù)據(jù)轉(zhuǎn)換為物理數(shù)據(jù)的編程。VO是什么?它是值對(duì)象,準(zhǔn)確地講,它是業(yè)務(wù)對(duì)象,是生活在業(yè)務(wù)層的,是業(yè)務(wù)邏輯需要了解,需要使用的,再簡(jiǎn)單地講,它是概念模型轉(zhuǎn)換得到的。FormBean又是什么?它只是HTML表單的封裝,是為了在控制層弱化request中存儲(chǔ)數(shù)據(jù)的作用,將request的get方法轉(zhuǎn)變?yōu)閷?duì)象的存取值。
          理清了上述概念,好,我們就開始討論,為什么需要它們,為什么不需要它們。首先說(shuō)PO和VO吧,它們的關(guān)系應(yīng)該是相互獨(dú)立的,一個(gè)VO可以只是PO的部分,也可以是多個(gè)PO構(gòu)成,同樣也可以等同于一個(gè)PO(當(dāng)然我是指他們的屬性)。正因?yàn)檫@樣,PO獨(dú)立出來(lái),數(shù)據(jù)持久層也就獨(dú)立出來(lái)了,它不會(huì)受到任何業(yè)務(wù)的干涉。又正因?yàn)檫@樣,業(yè)務(wù)邏輯層也獨(dú)立開來(lái),它不會(huì)受到數(shù)據(jù)持久層的影響,業(yè)務(wù)層關(guān)心的只是業(yè)務(wù)邏輯的處理,至于怎么存怎么讀交給別人吧!不過(guò),另外一點(diǎn),如果我們沒有使用數(shù)據(jù)持久層,或者說(shuō)沒有使用hibernate,那么PO和VO也可以是同一個(gè)東西,雖然這并不好。其次,讓我們看看FormBean和VO,如果簡(jiǎn)單地講,我們是可以不需要FormBean的,它只是struts帶來(lái)的一部分,而VO是無(wú)論如何不能舍棄的。如果讓FormBean直接到業(yè)務(wù)層(它本來(lái)應(yīng)該生活在控制層),那么會(huì)帶來(lái)什么?View和Model就出現(xiàn)了強(qiáng)耦合,如果想改一下view的表示,整個(gè)業(yè)務(wù)邏輯都得改,恐怖的事情啊!
          這些對(duì)象概念的出現(xiàn)其實(shí)就是體現(xiàn)了一種層的思維,也是體現(xiàn)了一種框架的思維,在層與層之間我們需要什么?我們應(yīng)該怎么通信,其實(shí)大家認(rèn)真地用筆畫上幾個(gè)圖就可以知道了。做web應(yīng)用尤其是企業(yè)應(yīng)用,切忌像樓上某些朋友說(shuō)的,一個(gè)東東從頭到尾,那是非常低劣和錯(cuò)誤的設(shè)計(jì)。我們不要單純地就為了某些對(duì)象去爭(zhēng)論什么,它們更多的只是思維。這樣的思維給我們帶來(lái)了哪些好處,不言自明,當(dāng)然,我們也不得不否認(rèn),我們因此失去了某些東西,比如局部的性能或者繁瑣的代碼和調(diào)用過(guò)程,只是自己衡量一下,它是否值得。
          posted on 2008-04-24 12:50 caihaibo 閱讀(145) 評(píng)論(0)  編輯  收藏 所屬分類: hibernate
          主站蜘蛛池模板: 中西区| 谷城县| 万山特区| 太谷县| 安多县| 临泉县| 广南县| 太保市| 行唐县| 兰考县| 崇阳县| 沁阳市| 福安市| 潜江市| 洛阳市| 绥宁县| 大理市| 石棉县| 平阴县| 泰兴市| 出国| 得荣县| 云和县| 调兵山市| 黄冈市| 农安县| 卓尼县| 新龙县| 当雄县| 陈巴尔虎旗| 涿鹿县| 潢川县| 原阳县| 桦川县| 珠海市| 仁布县| 土默特左旗| 神池县| 和平县| 老河口市| 繁峙县|