我有一个要在数据集上运行的算法列表。例如,假设我的数据集是地址列表。我需要检查地址的有效性,但我有几种不同的验证算法。说我有validation_one
和validation_two
。但是将来我需要添加validation_three
,validation_four
等。我需要在地址列表上运行所有验证,即使是添加新的验证。
是否有适合此的设计模式?我知道策略是用于选择 算法,但我特别需要一种将所有算法应用于数据集的方法。
我有一个要在数据集上运行的算法列表。例如,假设我的数据集是地址列表。我需要检查地址的有效性,但我有几种不同的验证算法。说我有validation_one
和validation_two
。但是将来我需要添加validation_three
,validation_four
等。我需要在地址列表上运行所有验证,即使是添加新的验证。
是否有适合此的设计模式?我知道策略是用于选择 算法,但我特别需要一种将所有算法应用于数据集的方法。
你没有说一种语言..但假设它有泛型。
给定一个DataSet<T>
还假设不需要交叉验证(即每个 T 都可以完全通过自己的数据进行验证)
使用单一方法声明验证策略。
IValidate<T>{bool validate(T item);}
验证一,验证二…。将实施这一战略
有一个List<IValidate<T>>
你可以添加和删除实现的地方。
数据集中的每个项目调用列表中的每个策略。
然后,您可以选择如何处理失败。
这听起来像是责任链,链中的所有处理程序都接受请求并将其传递给下一个处理程序。