Software Design - Pattern - Data Transfer Object (DTO)

什麼是 DTO?

Data Transfer Object (數據傳輸對象) 是定義如何在應用程序之間發送數據的對象。它僅用於發送和接收數據,本身不包含任何業務邏輯。

為什麼使用 DTO?

輕鬆收發

在沒有任何邏輯的基礎上,可以僅使用序列化與反序列化就保證對象的完整性和可傳遞性。

避免過度暴露訊息

對分層或模組來說,彼此間應盡量降低耦合。下圖以公園廁所報修為案例。

DTO Example

這個資料流由鄉公所傳到基層人員手上,中間經過兩個邊界

  • 鄉公所 | 工程公司 => DTO (公文)
  • 工程公司 | 基層人員 => DTO (簡訊)

每個單位的關注點不同,在意的資料也會不同,DTO 做為邊界兩方做最小程度的媒介,隱藏的不該被關注(敏感)的事

  • 印章對工程公司並不是必要資訊
  • 詳細的時間格式是對基層人員並不是必要資訊

在實作上常被用於轉換 DomainModol -> DomainDto

注意事項

類別數量增加,請自行評估使用情形

Ref