Я видел следующий шаблон, используемый во многих местах:
abstract class SimpleProvider<T>
{
public object Create(IContext context)
{
return CreateInstance(context);
}
protected abstract T CreateInstance(IContext context);
}
Я не понимаю практической разницы, почему она не просто написана как:
abstract class SimpleProvider<T>
{
public abstract T Create(IContext context);
}
ОБНОВЛЕНИЕ: Приведенный выше фрагмент кода взят из документации для Ninject
, где интерфейс не указан, но, глядя на фактический источник, я вижу, что SimpleProvider<T>
реализует интерфейс IProvider
, который объясняет нужно для дополнительного вызова и отвечает на мой вопрос.