考虑您有以下课程:Class1
,Class2
.... Class1000
。
所有类都继承接口IClass
。
所有类都可以使用以下代码进行验证
Validate(IClass class)
{
}
如果不使用if条件,我们如何跳过200级到300级的验证(这些数字可以变化,所以没有使用数字的逻辑)?
答案 0 :(得分:2)
就个人而言,我会将验证检查移到模型中。
E.g。
public interface IClass{
bool ShouldValidate();
}
然后,在每个班级:
public class Class200
{
public bool ShouldValidate() => false; // because whatever
}
然后在你的验证中:
public void Validate(IClass class)
{
if(class.ShouldValidate())
{
// do whatever
}
}
这种逻辑属于IClass
实例,任何愿意扩展它的人都知道如何实现异常。
此外,对于类200-300,您可以从始终返回false
的公共基类继承它们以具有DRY模式。
更新另一种选择是直接在类中放置验证,例如像这样:
public interface IClass{
void Validate();
}
然后将方法留在类200-300中为空,例如
public class Class200
{
public bool Validate()
{
}
}
并在需要的地方实施
public class Class1
{
public bool Validate()
{
// do awesome things here
}
}