VO秕岛、DTO碌燕、DO、PO區(qū)分

ABSTRACT

目前的三層架構的系統(tǒng)開發(fā)继薛,在不同的層都會定義不同的對象修壕。雖然各個層次中的對象信息都差不多,但還是得分層區(qū)別對待遏考。因此慈鸠,有必要研究一下三層架構下各層對象之間的具體差異,以便日后開發(fā)能夠?qū)ο到y(tǒng)架構理解更深刻灌具。

INTRODUCTION

首先給出四個對象的全稱[1]

  • VO【View Object】 視圖對象-用于展示層青团,將某個指定的頁面(或者組建)封裝起來。

  • DTO【Data Transfer Object】數(shù)據(jù)傳輸對象-泛指視圖層和服務層之間的數(shù)據(jù)傳輸對象咖楣。

  • DO【Domain Object】領域?qū)ο?現(xiàn)實生活中抽象出來的有形的或無形的業(yè)務實體督笆。

  • PO【Persistent Object】持久化對象-跟持久層【通常是關系型數(shù)據(jù)庫】形成一一映射的關系,如果持久層是關系型數(shù)據(jù)庫截歉,那么數(shù)據(jù)庫表中的每個字段則對應PO中的每個屬性胖腾。

四個對象之間的在三層架構中的交互時序圖如圖1所示:

圖1 四個對象之間的在三層架構中的交互時序圖

領域模型中的實體類分為四種類型:VODTODO咸作、PO锨阿,各種實體類用于不同業(yè)務層次間的交互,并會在層次內(nèi)實現(xiàn)實體類之間的轉化记罚。

業(yè)務分層為:視圖層(VIEW+ACTION)墅诡,服務層(SERVICE),持久層(DAO[2]

ANALYSIS

各個對象之間的關系和異同分析:

1.VO和DTO

DTO為數(shù)據(jù)傳輸對象桐智,既然是放在網(wǎng)絡中傳輸?shù)哪┰纾虼耍搶ο蟊厝徊荒芴纺[说庭,否則信息太多必然會影響數(shù)據(jù)傳輸然磷。而VO作為視圖層的視圖對象,應前端要求刊驴,同時為了滿足用戶對豐富度的要求姿搜,會存放很多信息進行展示,使得產(chǎn)品豐富化捆憎。因此VO和DTO一般情況下會使用兩個有點差別的對象舅柜,但信息基本一致,DTO就是根據(jù)VO構造的躲惰,他們都是POJO致份。

對于設計層面來說,概念上還是應該存在VO和DTO础拨,因為兩者有著本質(zhì)的區(qū)別氮块,DTO代表服務層需要接收的數(shù)據(jù)和返回的數(shù)據(jù),而VO代表展示層需要顯示的數(shù)據(jù)诡宗。表現(xiàn)層可以根據(jù)需求進行調(diào)整雇锡,但是DTO傳回來的數(shù)據(jù)是一致的,具體的展示邏輯是從VO的字段定義中決定的僚焦。從職責單一原則來看锰提,服務層只負責業(yè)務,與具體的表現(xiàn)形式無關芳悲,因此立肘,它返回的DTO,不應該出現(xiàn)與表現(xiàn)形式的耦合名扛。

2. DTO和DO

首先是概念上的區(qū)別谅年,DTO是展示層和服務層之間的數(shù)據(jù)傳輸對象(可以認為是兩者之間的協(xié)議),而DO是對現(xiàn)實世界各種業(yè)務角色的抽象肮韧,這就引出了兩者在數(shù)據(jù)上的區(qū)別融蹂。

例如UserInfo和User旺订,前者是DTO中的對象,而后者是DO中的對象超燃。對于一個getUser方法來說区拳,本質(zhì)上它永遠不應該返回用戶的密碼,因此UserInfo至少比User少一個password的數(shù)據(jù)意乓。而在領域驅(qū)動設計中樱调,DO不是簡單的POJO,它具有領域業(yè)務邏輯[1]届良。

從數(shù)學維度看笆凌,DTO和DO更像多對多的映射關系。一個DTO中可能包含多個DO中的屬性士葫,同時一個DO可能對應多個DTO乞而。

從業(yè)務分層角度來說,DO中可能有一些不想讓展示層知曉的屬性慢显,同時DO中也可能包含一些不能讓展示層直接調(diào)用的方法晦闰。

3. DO和PO

DO和PO在絕大部分情況下是一一對應的,PO是只含有get/set方法的POJO鳍怨,但某些場景還是能反映出兩者在概念上存在本質(zhì)的區(qū)別:

DO在某些場景下不需要進行顯式的持久化,例如利用策略模式設計的商品折扣策略跪妥,會衍生出折扣策略的接口和不同折扣策略實現(xiàn)類鞋喇,這些折扣策略實現(xiàn)類可以算是DO,但它們只駐留在靜態(tài)內(nèi)存眉撵,不需要持久化到持久層侦香,因此,這類DO是不存在對應的PO的纽疟。

同樣的道理罐韩,某些場景下,PO也沒有對應的DO污朽,例如老師Teacher和學生Student存在多對多的關系散吵,在關系數(shù)據(jù)庫中,這種關系需要表現(xiàn)為一個中間表蟆肆,也就對應有一個TeacherAndStudentPO的PO矾睦,但這個PO在業(yè)務領域沒有任何現(xiàn)實的意義,它完全不能與任何DO對應上炎功。這里要特別聲明枚冗,并不是所有多對多關系都沒有業(yè)務含義,這跟具體業(yè)務場景有關蛇损,例如:兩個PO之間的關系會影響具體業(yè)務赁温,并且這種關系存在多種類型坛怪,那么這種多對多關系也應該表現(xiàn)為一個DO,又如:“角色”與“資源”之間存在多對多關系股囊,而這種關系很明顯會表現(xiàn)為一個DO——“權限”袜匿。

REFERENCE

[1]. 隨風而逝,只是飄零.淺析VO、DTO毁涉、DO沉帮、PO的概念、區(qū)別和用處[EB/OL].https://www.cnblogs.com/zxf330301/p/6534643.html

[2]. wangxin0314.實體類(VO贫堰,DO穆壕,DTO)的劃分[EB/OL].https://blog.csdn.net/wangxin1982314/article/details/51954264.

[3].用戶1418372.第一節(jié) DDD領域驅(qū)動概述[EB/OL].https://cloud.tencent.com/developer/article/1336541

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市其屏,隨后出現(xiàn)的幾起案子喇勋,更是在濱河造成了極大的恐慌,老刑警劉巖偎行,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件川背,死亡現(xiàn)場離奇詭異,居然都是意外死亡蛤袒,警方通過查閱死者的電腦和手機熄云,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來妙真,“玉大人缴允,你說我怎么就攤上這事≌涞拢” “怎么了练般?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長锈候。 經(jīng)常有香客問我薄料,道長,這世上最難降的妖魔是什么泵琳? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任摄职,我火速辦了婚禮,結果婚禮上获列,老公的妹妹穿的比我還像新娘琳钉。我一直安慰自己,他們只是感情好蛛倦,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布歌懒。 她就那樣靜靜地躺著,像睡著了一般溯壶。 火紅的嫁衣襯著肌膚如雪及皂。 梳的紋絲不亂的頭發(fā)上甫男,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機與錄音验烧,去河邊找鬼板驳。 笑死,一個胖子當著我的面吹牛碍拆,可吹牛的內(nèi)容都是我干的若治。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼感混,長吁一口氣:“原來是場噩夢啊……” “哼端幼!你這毒婦竟也來了?” 一聲冷哼從身側響起弧满,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤婆跑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后庭呜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滑进,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年募谎,在試婚紗的時候發(fā)現(xiàn)自己被綠了扶关。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡数冬,死狀恐怖节槐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吉执,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布地来,位于F島的核電站戳玫,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏未斑。R本人自食惡果不足惜咕宿,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蜡秽。 院中可真熱鬧府阀,春花似錦、人聲如沸芽突。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寞蚌。三九已至田巴,卻和暖如春钠糊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背壹哺。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工抄伍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人管宵。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓截珍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親箩朴。 傳聞我的和親對象是個殘疾皇子岗喉,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容