このパターンに名前があるかどうか知っている人はいますか?私はそれをかなりの量で使用する傾向があります。
基本的には、インターフェイスを実装する列挙可能なクラスをメソッドに提供できるようにする動作パターンであり、それらすべてを実行します。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 では、ハンドラーは入力を処理できる 1 を見つけるのに十分な深さだけ反復され、各責任には次の責任への参照があります (リンクされたリストのように) )、一方、私の例では、それらをすべてまとめて渡します。
私はちょうどこれに名前を付けようとしています。助けてくれてありがとう!