0

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

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

4

3 回答 3

2

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

给定一个DataSet<T>

还假设不需要交叉验证(即每个 T 都可以完全通过自己的数据进行验证)

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

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

验证一,验证二…。将实施这一战略

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

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

然后,您可以选择如何处理失败。

于 2012-08-22T18:36:24.557 回答
-1

合成的。

这基本上是其他两个答案所等同的。

第一个答案是复合的实现。第二个是使用责任链作为组合。

于 2012-08-23T07:33:59.670 回答
-1

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

于 2012-08-22T18:37:32.267 回答