通过策略设计模式进行迭代

时间:2012-08-22 18:20:20

标签: asp.net ruby algorithm design-patterns strategy-pattern

我有一个我想在数据集上运行的算法列表。例如,假设我的数据集是地址列表。我需要检查地址的有效性,但我有几种不同的验证算法。说我有validation_onevalidation_two。但是将来我需要添加validation_threevalidation_four等。我需要在地址列表中运行所有验证,甚至是新的验证。

是否有符合此要求的设计模式?我知道策略是选择算法,但我特别需要一种方法来应用数据集上的所有算法。

3 个答案:

答案 0 :(得分:2)

你没有说过语言..但假设它有泛型。

给出DataSet<T>

假设不需要交叉验证(即每个T可以完全由其自己的数据验证)

使用单一方法声明验证策略。

IValidate<T>{bool validate(T item);} 

validation_one,validation_two ......将实施这一战略

有一个List<IValidate<T>>,你可以添加和删除实现。

数据集中的Foreach项调用列表中的每个策略。

然后你可以选择如何应对失败。

答案 1 :(得分:0)

这听起来像责任链,链中的所有处理程序都接受请求并将其传递给下一个处理程序。

答案 2 :(得分:0)

Composite.

这基本上是另外两个答案所等同的。

第一个答案是COmposite的实施。第二个是作为复合材料的重新责任链。