有人知道这个模式的名称吗?我经常使用它。
基本上,这是一种行为模式,允许您提供一个实现接口的类的可枚举方法,并运行它们。以下是C#示例:
interface IInputValidator
{
bool IsValid(int input);
}
class GreaterThanZeroValidator : IInputValidator
{
public bool IsValid(int input)
{
return input > 0;
}
}
class LessThanOneThousandValidator : IInputValidator
{
public bool IsValid(int input)
{
return input < 1000;
}
}
然后使用这些方法:
public void ValidateInput(int input, IEnumerable<IInputValidator> validators)
{
bool allValid = true;
foreach(var validator in validators)
{
if(!validator.IsValid(input))
allValid = false;
}
if(!allValid)
throw new ArgumentException();
}
对我来说,它看起来非常像策略模式,但具有多个策略,所有策略都有机会处理输入,而普通的策略模式只采用1种策略。
它也有点像责任链模式,但在普通的CoR中,处理程序仅迭代足够深以找到能够处理输入的处理程序,并且每个责任都引用下一个责任(如链接列表),而在我的示例中,我将它们全部一起传递。
我只是想给这件事起个名字。谢谢您的任何帮助!
foreach
。抱歉! - CodingWithSpike