いくつかのバリデーターを介して電子メールを検証する必要があります。バリデーター( 、 ...)EmailValidator
のリストを持つclass( )があり、そのバリデーターを介して電子メールを検証します。
たとえば、プロバイダーごとに独自のバリデーターがあります。これがgmailであると認識した場合、特定のパターンに一致するかどうかを確認します。mygmailの場合は、 mygmailのパターンに一致するかどうかを確認します。それ以外の場合は、trueを返します。
他の何かを検証します。RegexValidator
MXValidator
RegexValidator
MXValidator
これを実装するための正しいデザインパターンは何ですか?
public interface IValidator
{
bool Validate(string email);
}
public class RegexValidator : IValidator
{
private const string EMAIL_REGEX = @"\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b";
public bool Validate(string email)
{
var regex = new Regex(EMAIL_REGEX);
var isEmailFormat regex.IsMatch(email);
if(isEmailFormat)
{
//here it should recognize the provider and check if it match the provider's pattern
}
return true;
}
}