我必须通过几个验证器来验证电子邮件。我有EmailValidator
具有验证器列表(RegexValidator
,MXValidator
...)的类(),它通过该验证器验证电子邮件。
RegexValidator
例如,每个提供者都有自己的验证器。如果它识别出这是gmail,那么它会检查它是否匹配特定的模式,如果它是mygmail,那么它会检查它是否匹配 mygmail 的模式,否则它会返回 true。
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;
}
}