真的有必要定义VO,BO,PO,DO,DTO吗?
今天給大家?guī)?lái)一篇關(guān)于VO,BO,PO,DO,DTO的文章,閱讀完這篇文章之后,希望大家對(duì)VO,BO,PO,DO,DTO有自己的見(jiàn)解。
VO,BO,PO,DO,DTO
概念
在講具體的概念之前,我們先簡(jiǎn)單的講一講我們MVC開(kāi)發(fā)模式。
MVC的簡(jiǎn)單定義:
M層負(fù)責(zé)與數(shù)據(jù)庫(kù)打交道;
C層負(fù)責(zé)業(yè)務(wù)邏輯的編寫(xiě);
V層負(fù)責(zé)給用戶(hù)展示(針對(duì)于前后端不分離的項(xiàng)目,不分離項(xiàng)目那種編寫(xiě)模版的方式,理解V的概念更直觀(guān))。
而我們今天要說(shuō)的VO,BO,PO,DO,DTO呢,就是穿梭在這M、V、C層之間的實(shí)體傳輸對(duì)象。
實(shí)體傳輸對(duì)象示意圖
- VO(View Object):視圖對(duì)象,用于展示層,它的作用是把某個(gè)指定頁(yè)面(或組件)的所有數(shù)據(jù)封裝起來(lái)。
- DTO(Data Transfer Object):數(shù)據(jù)傳輸對(duì)象,這個(gè)概念來(lái)源于J2EE的設(shè)計(jì)模式,原來(lái)的目的是為了EJB的分布式應(yīng)用提供粗粒度的數(shù)據(jù)實(shí)體,以減少分布式調(diào)用的次數(shù),從而提高分布式調(diào)用的性能和降低網(wǎng)絡(luò)負(fù)載,但在這里,更符合泛指用于展示層與服務(wù)層之間的數(shù)據(jù)傳輸對(duì)象。
- BO(Business Object):業(yè)務(wù)對(duì)象,把業(yè)務(wù)邏輯封裝為一個(gè)對(duì)象,這個(gè)對(duì)象可以包括一個(gè)或多個(gè)其它的對(duì)象。
- PO(Persistent Object):持久化對(duì)象,它跟持久層(通常是關(guān)系型數(shù)據(jù)庫(kù))的數(shù)據(jù)結(jié)構(gòu)形成一一對(duì)應(yīng)的映射關(guān)系,如果持久層是關(guān)系型數(shù)據(jù)庫(kù),那么,數(shù)據(jù)表中的每個(gè)字段(或若干個(gè))就對(duì)應(yīng)PO的一個(gè)(或若干個(gè))屬性。
- DO(Domain Object):領(lǐng)域?qū)ο?/strong>,就是從現(xiàn)實(shí)世界中抽象出來(lái)的有形或無(wú)形的業(yè)務(wù)實(shí)體。
有必要用嗎?
項(xiàng)目中真的有必要定義VO,BO,PO,DO,DTO嗎?
還是要理性看待這個(gè)問(wèn)題,要看我們項(xiàng)目“目的地”是什么。
如果項(xiàng)目比較小,是一個(gè)簡(jiǎn)單的MVC項(xiàng)目,又是單兵作戰(zhàn),我不建議使用VO,BO,PO,DO,DTO,直接用POJO負(fù)責(zé)各個(gè)層來(lái)傳輸就好,因?yàn)檫@種項(xiàng)目的“目的地”是快速完成。
而我們更多的時(shí)候,是持續(xù)迭代的團(tuán)隊(duì)協(xié)作項(xiàng)目,這個(gè)時(shí)候我們就建議用VO,BO,PO,DO,DTO,而且團(tuán)隊(duì)內(nèi)要達(dá)成共識(shí),形成一個(gè)標(biāo)準(zhǔn)規(guī)范。
其實(shí)就是提升項(xiàng)目的可擴(kuò)展性、可維護(hù)性與可閱讀性。
提升這些性能的盡頭是經(jīng)濟(jì)效益。
總結(jié)
這篇文章很短,最后稍微總結(jié)一下,不管用哪種方式,只要團(tuán)隊(duì)內(nèi)定義好一種適應(yīng)的協(xié)同規(guī)范就行。
沒(méi)有一個(gè)絕對(duì)好與絕對(duì)壞的方式方法。
團(tuán)隊(duì)規(guī)范的盡頭能提升項(xiàng)目的可擴(kuò)展性、可維護(hù)性與可閱讀性,從而降低bug率。
另附這些概念命名規(guī)范:
- 數(shù)據(jù)對(duì)象:xxxPO,xxx即為數(shù)據(jù)表名。(也可DO)
- 數(shù)據(jù)傳輸對(duì)象:xxxDTO,xxx為業(yè)務(wù)領(lǐng)域相關(guān)的名稱(chēng)。
- 展示對(duì)象:xxxVO,xxx一般為網(wǎng)頁(yè)名稱(chēng)。
- 業(yè)務(wù)對(duì)象:xxxBO,xxx是業(yè)務(wù)名稱(chēng)。
總結(jié)
以上是生活随笔為你收集整理的真的有必要定义VO,BO,PO,DO,DTO吗?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 年度成绩大赏|2021,StreamNa
- 下一篇: 地税计算机发展,当前我省地税信息化数据应