有谁知道这种模式是否有名字?我倾向于大量使用它。
基本上,它是一种行为模式,它允许您提供一种方法,该方法具有实现接口的可枚举类,并且它运行所有这些类。这是一个 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();
}
所以对我来说,它看起来很像一个策略模式,但有多种策略都有机会处理输入,而普通的 Strat 模式只接受一种策略。
它也有点像责任链,只是在普通的 CoR 中,处理程序只迭代到足够深以找到可以处理输入的 1,并且每个责任都有对下一个责任的引用(就像链表),而在我的示例中,我将它们一起传递。
我只是想给这件事起个名字。谢谢你的帮助!