Ich muss E-Mails durch mehrere Validierungsprogramme prüfen. Ich habe Klasse( EmailValidator
), die eine Liste von Prüfern( RegexValidator
, MXValidator
...) und validiert E-Mails durch diese Validatoren. RegexValidator
hat zum Beispiel für jeden Anbieter eigene Validatoren. Wenn es erkennt, dass es sich um gmail und prüft, ob es mit einem bestimmten Muster übereinstimmt, falls ja mygmail also prüft es, ob es mit dem Muster von mygmail übereinstimmt, andernfalls gibt es true zurück. MXValidator
wird etwas anderes validiert.
Was ist das richtige Entwurfsmuster, um dies zu implementieren?
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;
}
}