Почему Абстрактная Фабрика использует абстрактный интерфейс вместо интерфейса?
Я изучаю шаблоны проектирования, и первый пример в книге посвящен абстрактной фабрике. Я построил упражнение в VS, и все выглядит хорошо, но есть один вопрос, который меня интересует.
В книге фабричный класс реализован так:
public abstract class AbstractVehicleFactory
{
public abstract IBody CreateBody();
public abstract IChassis CreateChassis();
public abstract IGlassware CreateGlassware();
}
После выполнения упражнения я отметил, что вышеуказанный класс можно заменить следующим кодом:
public interface IAbstractVehicleFactory
{
IBody CreateBody();
IChassis CreateChassis();
IGlassware CreateGlassware();
}
Конечно, оба примера функционируют абсолютно одинаково, но мне интересно, в чем причина использования абстрактного класса, а не интерфейса?