В Библиотеке Предприятия, как делает абстрактный Validator.cs, имеют определение метода?

Рассмотрите эту часть кода:

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() перегрузка, как абстрактный класс может иметь определения как это?

1
задан Jeremy McGee 24 April 2010 в 06:15
поделиться

2 ответа

В абстрактном классе должен быть хотя бы один абстрактный метод. Это не значит, что он не может определять конкретные методы. Одно из применений этого свойства - шаблон проектирования Template Method, который позволяет вам определять алгоритм таким образом, чтобы он мог быть изменен подклассами.

2
ответ дан 3 September 2019 в 01:03
поделиться

Думаю, это совершенно нормально. Это называется шаблоном шаблонного метода. Верно?

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

0
ответ дан 3 September 2019 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: