五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

真的有必要定義VO,BO,PO,DO,DTO嗎?

2023-06-11 10:48 作者:gzqhero  | 我要投稿

今天給大家?guī)硪黄P(guān)于VO,BO,PO,DO,DTO的文章,閱讀完這篇文章之后,希望大家對(duì)VO,BO,PO,DO,DTO有自己的見解。

概念

在講具體的概念之前,我們先簡(jiǎn)單的講一講我們MVC開發(fā)模式。

MVC的簡(jiǎn)單定義:

M層負(fù)責(zé)與數(shù)據(jù)庫打交道;

C層負(fù)責(zé)業(yè)務(wù)邏輯的編寫;

V層負(fù)責(zé)給用戶展示(針對(duì)于前后端不分離的項(xiàng)目,不分離項(xiàng)目那種編寫模版的方式,理解V的概念更直觀)。

而我們今天要說的VO,BO,PO,DO,DTO呢,就是穿梭在這M、V、C層之間的實(shí)體傳輸對(duì)象。


  • VO(View Object):視圖對(duì)象,用于展示層,它的作用是把某個(gè)指定頁面(或組件)的所有數(shù)據(jù)封裝起來。

  • DTO(Data Transfer Object):數(shù)據(jù)傳輸對(duì)象,這個(gè)概念來源于J2EE的設(shè)計(jì)模式,原來的目的是為了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ù)庫)的數(shù)據(jù)結(jié)構(gòu)形成一一對(duì)應(yīng)的映射關(guān)系,如果持久層是關(guān)系型數(shù)據(jù)庫,那么,數(shù)據(jù)表中的每個(gè)字段(或若干個(gè))就對(duì)應(yīng)PO的一個(gè)(或若干個(gè))屬性。

  • DO(Domain Object):領(lǐng)域?qū)ο?/strong>,就是從現(xiàn)實(shí)世界中抽象出來的有形或無形的業(yè)務(wù)實(shí)體。

有必要用嗎?

項(xiàng)目中真的有必要定義VO,BO,PO,DO,DTO嗎?

還是要理性看待這個(gè)問題,要看我們項(xiàng)目“目的地”是什么。

如果項(xiàng)目比較小,是一個(gè)簡(jiǎn)單的MVC項(xiàng)目,又是單兵作戰(zhàn),我不建議使用VO,BO,PO,DO,DTO,直接用POJO負(fù)責(zé)各個(gè)層來傳輸就好,因?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ī)范。

  1. 業(yè)務(wù)復(fù)雜,人員協(xié)同性要求高的場(chǎng)景下,這些規(guī)范性的東西不按著來雖然不會(huì)出錯(cuò),程序照樣跑,但是遵守規(guī)范會(huì)讓程序更具擴(kuò)展性和可讀性;

  2. 讓類語義更明確,很容易知道類的含義;

其實(shí)就是提升項(xiàng)目的可擴(kuò)展性、可維護(hù)性可閱讀性。

提升這些性能的盡頭是經(jīng)濟(jì)效益

總結(jié)

這篇文章很短,最后稍微總結(jié)一下,不管用哪種方式,只要團(tuán)隊(duì)內(nèi)定義好一種適應(yīng)的協(xié)同規(guī)范就行。

沒有一個(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)的名稱。

  • 展示對(duì)象:xxxVO,xxx一般為網(wǎng)頁名稱。

  • 業(yè)務(wù)對(duì)象:xxxBO,xxx是業(yè)務(wù)名稱。


真的有必要定義VO,BO,PO,DO,DTO嗎?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
新津县| 馆陶县| 永川市| 邛崃市| 洞头县| 汉源县| 陕西省| 永登县| 绥化市| 鄱阳县| 沁源县| 靖安县| 青海省| 高邑县| 定襄县| 新乐市| 广平县| 芒康县| 阿合奇县| 厦门市| 三都| 马尔康县| 红原县| 达日县| 青铜峡市| 自贡市| 绍兴县| 黎川县| 温宿县| 阿坝县| 汝州市| 尼木县| 黄梅县| 禹城市| 富锦市| 沂水县| 蛟河市| 宁远县| 敖汉旗| 海丰县| 无棣县|