2011-07-15 9 views
0

私は3つのグループのデータgroup0、group1、group2を持っています。重複チェックをインテリジェントにフィルタリングする方法は?

group0はgroup1とgroup2をチェックするように設定されています。

グループ1とグループ2をチェックするようにグループ1が設定されています。

group2はgroup0とgroup1をチェックするように設定されています。

私はgroup0.checkData()を呼び出すと、ローカルデータをgroup1とgroup2に対してチェックします。私がgroup1.checkData()を呼び出すと、group0とgroup2に対してローカルデータがすべてチェックされます。 group2.checkData()を呼び出すと、group0とgroup1に対してローカルデータがすべてチェックされます。

group0とgroup1は既にチェックされているので、group2のチェックは不要であることがわかります。あなたは不必要な重複チェックをしてしまうことになります。

group0は、group2がチェックすることを認識していません。また、group2は、group0がチェックしていることを認識していません。

どのようにこのフィルタリングの問題を解決するためのアイデアですか?

答えて

2

重複チェックを避ける唯一の方法は、すべてのグループ(またはグループのペアの比較を担当するいくつかのコンポーネント)を認識しているコンポーネントにチェックロジックを移動することです。

+0

クロスチェックを定義し、そこからフィルタするGroupManagerのように作成しますか?意味をなさない – Brandi

0

私は別のクラスにデータのチェックをリファクタリングします。データクラスが多すぎる(単一責任の原則)。より多くのアドバイスを提供するのに十分な情報がありません。新しいクラスは、少なくとも1つのデータグループ(おそらく他のもの)へのアクセスを必要とします。おそらくこれらをctorに注入するでしょう。

関連する問題