2011-12-14 8 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

関連する問題