たとえば、List<Item>
などのアイテムのコレクションがあり、アイテムのいずれかの値がセッターによって変更されるなど、ラッパークラスからアイテムが変更されているかどうかを確認する必要があります。オブジェクトの変更を検出する方法は?
List<Item> items = itemsWrapper.getItems(); // itemsWrapper contains a list of items
Item anItem = items.get(index);
item.setProperty(property);
itemsWrapper.hasChanged(); // ??????
私は最後の声明などを達成する方法を見つけようとしています。
this oneのような類似の質問がありますが、Hibernateの使用が推奨されていますが、答えは非常に曖昧で、私の質問はDB関連ではありません。また、リスナーのリストを設定することについても言及していますが、私は彼のことができたかどうかは分かりません。
this other questionここで、選択された答えは、プロパティを変更するたびに上昇する必要があるdirty
フラグを使用することを示しています。しかし、私のクラスは実際により汚れたを得て、逆説的に、項目のプロパティを変更する数十のメソッドを変更する必要があります。
別の方法がありますか?透明であれば最適ですか?
"Observer" Pattern:itemsWrapperは変更の対象を観察します。 – Fildor
私たちにもっと背景を教えてもらえますか?私はあなたがコレクション自体ではなく、変更のために他の場所を監視したいと思うかもしれないと思う。 –
@Fildor私はオブザーバーパターンのアプローチもチェックしましたが、実際に "自分のコードをもっと汚くする"という点で、それが "ダーティ"フラグアプローチとどのように違うのか分かりません。オブジェクトの変更方法)。 – dabadaba