2011-12-14 49 views
2

我想一次更新Java對象的多個字段以執行更新檢查。我的想法是這樣的:更新Java對象的多個字段的最佳方法

SomethingValues values = new SomethingValues(); 
values.name = "abc"; 
values.amount = 12; 
values.weight = 42.2; 
... 
something.update(values); 

的替代將是一個SomethingValuesBuilder,但我認爲這需要一個建設者的額外的代碼是沒有必要在這裏。

如果我會用制定者...

something.setName("abc"); // would perform check 
something.setAmount(12); // would perform check 
... 

...我需要執行每個二傳手,而不是隻有一個在update方法的所有字段的時間檢查。

有沒有比更新域對象(something)附加值對象(values)更好的主意?

回答

0

我通常會去SomeObjectType.update(parameters),其中的對象是負責檢查和設置所有參數,並最終拋出一個IllegalArgumentException萬一有些參數不被接受。這樣你就可以獲得更好的可讀性和封裝。

+0

因此,這將是一樣的我的第一種方法,對嗎? – deamon

+0

我認爲你的意思是我的第一種方法,現在我正在使用它。 – deamon

+0

@deamon是的:) – GETah

0

我猜最常用的是Map<String, Object>,因爲它不需要任何額外的類。

例子:

+0

但是你必須反思地查找字段名稱並將對象轉換爲所需的類型。兩者都不適合重構。 – deamon

+0

@deamon true,但既不是自定義對象,除非您的主對象繼承自它。 –

+0

您可以改爲使用'Map ',這會提供更多的保護。 (認爲​​:'Calendar.set()') – BRFennPocock

相關問題