如何智能地过滤重复检查?

时间:2011-07-15 03:18:00

标签: algorithm language-agnostic

假设我有三组数据,group0,group1和group2。

group0设置为检查group1和group2。

group1设置为检查group0和group2。

group2设置为检查group0和group1。

当我调用group0.checkData()时,它会针对group1和group2检查所有本地数据。当我调用group1.checkData()时,它会针对group0和group2检查所有本地数据。当我调用group2.checkData()时,它会针对group0和group1检查所有本地数据。

您可以看到group2的检查不是必需的,因为group0和group1已经检查过它们。你最终做了一堆不必要的重复检查。

group0不知道group2会检查它,而group2不知道group0会检查它。

有任何想法如何解决这个过滤问题?

2 个答案:

答案 0 :(得分:2)

避免重复检查的唯一方法是将检查逻辑移动到一个知道所有组的组件(或者每个组件负责比较一对组的几个组件)。

答案 1 :(得分:0)

我会将数据检查重构为另一个类。数据类做得太多(单一责任原则)。没有足够的信息来提供更多建议。新类至少需要访问其中一个数据组(可能是其他数据组)。可能会将这些注入ctor。