我有一个抽象类,它进行自己的内部验证。它具有允许子类进行其他验证检查的另一种方法。目前,我已经创建了方法abstract
。
protected abstract bool ValidateFurther();
但是,我看到相当多的子类被迫重写它,只是为了返回true
。我正在考虑使方法virtual
。
protected virtual bool ValidateFurther() => true;
假设在抽象类中进行验证会很好吗?我担心子类可能不会注意到它,并且即使在需要时最终也不会覆盖它。这里哪种方法更合适?
您可以在设计中添加另一层。
public abstract class Base
{
protected abstract bool ValidateFurther();
}
public abstract class BaseWithValidation : Base
{
protected override bool ValidateFurther() => true;
}
如果继承类的重要子集只返回true,则可以使用BaseWithValidation
避免在各处重复代码;对于其他任何内容,请使用Base
。
abstract
方法意味着您只想定义要遵循的行为,并让子类执行实现。virtual
方法意味着您定义了具有初始实现的方法,但可以重写。所以也许您可以进一步解释您的情况,然后我们可以进行讨论!