Я изучаю шаблоны проектирования, и первый пример в книге — об абстрактной фабрике. Я построил упражнение в 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();
}
Конечно, оба примера работают одинаково, но интересно, в чем причина использования абстрактного класса, а не интерфейса?