考虑这段代码:
public abstract class Validator
{
protected Validator()
{
}
protected abstract void ValidateCore(object instance, string value, IList<ValidationResult> results);
public void Validate(object instance, string value, IList<ValidationResult> results)
{
if (null == instance) throw new ArgumentNullException("instance");
if (null == results) throw new ArgumentNullException("results");
ValidateCore(instance, value, results);
}
}
查看Validate()
重载,抽象类如何具有这样的定义?
答案 0 :(得分:2)
抽象类应该至少有一个抽象方法。这并不意味着它无法定义具体方法。此属性的一个用法是模板方法设计模式,它允许您以可以由子类更改的方式定义算法。
答案 1 :(得分:0)
我认为这是完全正常的。这就是模板方法模式。正确?