2016-01-13 69 views
1

我們有一個服務可以產生數十個各種響應bean。它們被應用程序內的其他服務使用。還有一個Web服務暴露了部分相同的功能。它返回的響應對象幾乎對應於內部響應bean的1:1。當然它們並不相同:刪除了一些字段,添加了swagger文檔屬性等。避免與數據對象重複

重複使用相同的bean感覺不可能,它們不同,即使只有稍微不同,將它們混合在一起感覺不好,因爲一個是內部的,另一個是暴露的。此外,還有這樣一個夢想,即在現代微型服務類型的組件模塊化和獨立的方式中進行開發。

不重複使用意味着重複每個響應對象,創建轉換器,同時保持同步。

兩種方式都很糟糕,我想不出任何好的東西。

回答

2

是。

我一直在這裏經常。有一些工具可以使映射器變得更簡單(bean映射器和不能),但是它們通常會引入更多的bug。我也看到/嘗試過繼承方案,讓一個領域對象從另一個領域繼承......這通常會導致比解決問題更多的問題。

事實證明,有90%的時間,對於內部數據和外部數據表示你有不同的擔憂。而映射層是將這些問題分開的好地方。將它們結合在一起總會讓我在路上繼續燃燒。你的里程可能會有所不同,但我懷疑它會如何,除非你有最簡單的應用程序,你將需要單獨的對象。

這是無聊的代碼,但它很簡單,並且非常容易測試。一旦你這樣做了,你的封裝就會變得越來越好,你可以讓你的合約獨立於你的內部實現而改變。