??????? 我一直很矛盾:是否PO可以用在商業(yè)邏輯層,當(dāng)作VO使用;還是將兩者分開。在許多論壇上,這兩者之爭(zhēng)也很激烈。所以今天我打算把我的想法寫下來。?
????????? 首先,java有幾種對(duì)象(PO,VO,DAO,BO,POJO)???
??????有一種觀點(diǎn)就是:PO只能用在數(shù)據(jù)層,VO用在商業(yè)邏輯層和表示層。各層操作屬于該層自己的數(shù)據(jù)對(duì)象,這樣就可以降低各層之間的耦合,便于以后系統(tǒng)的維護(hù)和擴(kuò)展。如果將PO用在各個(gè)層中就相當(dāng)于我們使用全局變量,我們知道在OO設(shè)計(jì)非常不贊成使用全局變量。?
?????? 但是每次都得進(jìn)行VO-PO的轉(zhuǎn)換,也確實(shí)很煩。我覺得有時(shí)候也可以在某個(gè)商業(yè)邏輯或者表示層使用PO,此時(shí)在這個(gè)商業(yè)邏輯的過程中PO的狀態(tài)是不發(fā)生變化的,比如顯示一條商品詳細(xì)信息的商業(yè)邏輯。?
?????? 在開發(fā)過的項(xiàng)目中,規(guī)模都很小,我一直都把PO當(dāng)VO用,因?yàn)镻O確實(shí)很方便,結(jié)合Hibernate的DAO,我使用JAVA的集合對(duì)象作為值傳遞的載體,當(dāng)然Struts也是我的不二之選。?
?????? 我認(rèn)為:在一些直觀的,簡(jiǎn)單的,不易發(fā)生變化的,不需要涉及多個(gè)PO時(shí),傳遞值還是使用PO好,這樣可以減少大量的工作量(也就意味著減少bug,減少風(fēng)險(xiǎn)),也不需要擔(dān)心未來的維護(hù)工作!(待續(xù))?
我不相信聲明po vo dto 太多o了 我個(gè)人不喜歡用別人的思考代替自己的思考 網(wǎng)上就o來o去,我不覺得我不vo就不面向?qū)ο螅籿o就沒擴(kuò)展性。我就覺得 在小項(xiàng)目 就pk代碼行 ,那種解決方法代碼行小 用拿種 代碼行小 意味著你更改的成本也小
喜歡ror的團(tuán)隊(duì)寫的《geeting real》,不要yy太多
現(xiàn)在不是文革 我不vo就給我戴帽子不分層 我不分層就給我戴帽子說我不OO
同意lz 自己的實(shí)踐比別人說的要強(qiáng)的
全局變量有時(shí)也會(huì)用到的,jvm很多借助類的靜態(tài)的東西,那就是全局的了,否則很多實(shí)例引用在對(duì)象間傳遞起來過于復(fù)雜了。
在api調(diào)用傳遞參數(shù)時(shí),可以將參數(shù)中不在數(shù)據(jù)表中的字段放到vo中。
直接繼承的話,如果有的情況VO需要里面有包含兩個(gè)PO的屬性,怎么弄?