在企业库中,抽象Validator.cs如何具有方法定义?

时间:2010-04-24 03:28:38

标签: c# enterprise-library

考虑这段代码:

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()重载,抽象类如何具有这样的定义?

2 个答案:

答案 0 :(得分:2)

抽象类应该至少有一个抽象方法。这并不意味着它无法定义具体方法。此属性的一个用法是模板方法设计模式,它允许您以可以由子类更改的方式定义算法。

答案 1 :(得分:0)

我认为这是完全正常的。这就是模板方法模式。正确?

http://en.wikipedia.org/wiki/Template_method_pattern