概念
PO(Persistent Object)
持久化對(duì)象,它跟持久層(通常是關(guān)系型數(shù)據(jù)庫)的數(shù)據(jù)結(jié)構(gòu)形成一一對(duì)應(yīng)的映射關(guān)系。
DTO(Data Transfer Object)
數(shù)據(jù)傳輸對(duì)象,是一種設(shè)計(jì)模式之間傳輸數(shù)據(jù)的軟件應(yīng)用系統(tǒng)放妈。
數(shù)據(jù)傳輸目標(biāo)往往是數(shù)據(jù)訪問對(duì)象從數(shù)據(jù)庫中檢索數(shù)據(jù)。
方便數(shù)據(jù)交互谁不,在這里泛指用于展示層與服務(wù)層之間的數(shù)據(jù)傳輸對(duì)象
VO(Value Object)
VO是顯示視圖模型钠导,視圖對(duì)象震嫉,用于展示層,它的作用是把某個(gè)指定頁面(或組件)的所有數(shù)據(jù)封裝起來牡属。
DTO與VO的區(qū)別
個(gè)人理解:
概念上兩者有著本質(zhì)的區(qū)別票堵,DTO 代表服務(wù)層需要接收的數(shù)據(jù)和返回的數(shù)據(jù),而 VO 代表展示層需要顯示的數(shù)據(jù)逮栅。
既然DTO是展示層與服務(wù)層之間傳遞數(shù)據(jù)的對(duì)象悴势,為什么還需要一個(gè)VO呢?
在只有一個(gè)客戶端的情況下DTO=VO措伐,DTO和VO的屬性值基本是一致的特纤,因此沒必要多此一舉。
但是在有兩個(gè)客戶端的情況下侥加,比如說客戶端A把性別男顯示為男生捧存,客戶端B把性別男顯示為帥哥(客戶定制化需求),此時(shí)需要兩個(gè)VO(這是設(shè)計(jì)層面上的思維担败,實(shí)現(xiàn)層面你可能認(rèn)為不需要兩個(gè)VO)昔穴,如果一個(gè)DTO對(duì)應(yīng)多個(gè)VO,則展示層需要把VO轉(zhuǎn)換為服務(wù)層對(duì)應(yīng)方法所要求的DTO提前,傳送給服務(wù)層吗货。從而達(dá)到服務(wù)層與展示層解耦的效果。