2011-07-15 45 views
0

比方說,我有三組數據,group0,group1和group2。如何智能地過濾重複檢查?

group0設置爲檢查組1和組2。

group1設置爲檢查group0和group2。

group2設置爲檢查group0和group1。

當我調用group0.checkData()時,它檢查它的所有本地數據是否針對group1和group 2.當我調用group1.checkData()時,它檢查它的所有本地數據是否針對group0和group2。當我調用group2.checkData()時,它檢查它的所有本地數據是否針對group0和group1。

雖然group2的檢查不是必須的,因爲group0和group1已經對它們進行檢查。你最終會做一堆不必要的重複檢查。

group0不知道group2將檢查它,group2不知道group0將檢查它。

任何想法如何解決這個過濾問題?

回答

2

避免重複檢查的唯一方法是將檢查邏輯移動到知道所有組(或每個組負責比較一組組)的組件。

+0

創建類似GroupManager的定義交叉檢查並從此過濾它?說得通。 – Brandi

0

我會重構數據到另一個類的檢查。數據類別做得太多(單一職責原則)。沒有足夠的信息提供更多建議。新班級至少需要訪問其中一個數據組(可能是其他人)。可能將這些注入到ctor中。