剛實習,在做項目的過程中看到Model和DTO都是定義的屬性,有點不明白為什么做這么做。
然后百度了一篇文章,在這里借鑒一下里面的內容:
簡單的說:DTO(數據傳輸對象)封裝的數據面向表現層(UI),Model封裝的數據面向業務邏輯層(service)。
好處:開發中模型改了但是UI沒變,則只需要改變model,而不需要改其他。
摘取自網上的文章:
表現層與應用層之間是通過數據傳輸對象(DTO)進行交互的,數據傳輸對象是沒有行為的POCO對象,它 的目的只是為了
對領域對象進行數據封裝,實現層與層之間的數據傳遞。為何不能直接將領域對象用於 數據傳遞?因為領域對象更注重領域,
而DTO更注重數據。不僅如此,由於“富領域模型”的特點,這樣 做會直接將領域對象的行為暴露給表現層。需要了解的是,數據
傳輸對象DTO本身並不是業務對象。數據傳輸對象是根據UI的需求進行設計的,而不 是根據領域對象進行設計的。比如,
Customer領域對象可能會包含一些諸如FirstName, LastName, Email, Address等信息。但如果UI上不打算顯示Address的,那么
CustomerDTO中也無需包含這個 Address的數據。
總結:DTO的存在是為了跟Model解耦,當業務邏輯需要改變Model時,而不需要改變UI界面時,就只要改變Model里面的數據。