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