2014-11-05 50 views
1

這可以是一般的java問題哪個更好地將新字段添加到現有的DTO類或新的DTO類?

DTO1

  1. ATTRIBUTE1
  2. attribute2
  3. attribute3

DTO2

  1. ATTRIBUTE1
  2. attribute2
  3. attribute3
  4. attribute4
  5. attribute5
  6. attribute6
  7. attribute7
  8. attribute8
  9. attribute9
  10. attribute10
  11. attribute11
  12. attribute12

我會顯示我的屏幕上的GXT網格值的一些列表。這些值不過是DTO1類的列表,其中我有3個字符串,我將從服務調用中獲得。現在我需要以相似的方式顯示12個不同的字段,但是基於條件(這次我不會顯示DTO1)。

用這12個字段創建一個新的DTO2類或將這12個字段添加到現有的DTO1類是否更好(性能明智),這樣我就不必再創建一個新的DTO2類。

案例1.添加了額外的字段,以現有的DTO類
難道會有我使用DTO類只有3個屬性,而不是新增加的12個屬性每次額外的空間?

案例2.新DTO2類創建
能創建通過將這些12場的DTO1爲1的情況下可以補償額外的空間?

拋出一些關於哪種方法提高性能的信息?

+0

DTO2爲什麼不擴展DTO1?所以,你只從屬性4到12 – ccheneson 2014-11-05 11:10:43

回答

0

如果您DTO2有12的3個屬性的類型相同DTO1,你一定要使用繼承:

class DTO1{ 

    private String attribute1; 
    private String attribute2; 
    private String attribute3; 

    //getters and setters 
} 

class DTO2 extends DTO1{ 

    private String attribute4; 
    //other attributes 
} 

,並使用DTO2無論你neeed正是所有12個屬性,DTO1當你只需要3個屬性。

如果您的DTO2不具有與DTO1相同類型的至少3個屬性,則應該創建一個新的單獨的DTO2類。將所有12個屬性都添加到DTO1並且僅使用其中3個是沒有用的,因爲當您創建DTO1的實例時,JVM將爲它們中的所有12個屬性分配內存,即使您沒有初始化其他9個(每個引用將佔用4/8字節 - 取決於JVM正在運行的機器)。

當然,除非你處理DTO的百萬,否則幾個字節更不重要。但是如果我們考慮設計以及未來可能需要多種DTO的可能性,則不應僅僅依靠一種類型的DTO來完成您的工作。

至於DTO2字段添加的額外空間,沒有辦法解決。如果你需要12個屬性,你必須爲它們分配內存,所以這裏沒有錯。

+0

謝謝丹尼爾我現在明白了。 – Rakesh 2014-11-06 07:36:36

0

我真的不會擔心表現,因爲我不相信上述方法之間有合理的區別。我寧願考慮最好的設計實踐,這將允許您在將來需要添加/編輯字段時維護您的應用程序。我認爲有一個單獨的dto,只有你需要的是最好的。如果每個dto使用可以放在父類中的相同基本字段,並將其餘添加到子類,那麼也可以使用繼承。對於你的例子,屬性1,2,3將在父類上,其餘的在子類上。

+0

感謝您的答覆 – Rakesh 2014-11-06 07:36:11