Skip to content

Latest commit

 

History

History
 
 
Абстрактная фабрика — это порождающий паттерн проектирования, который позволяет создавать семейства связанных объектов,
не привязываясь к конкретным классам создаваемых объектов.

Абстрактная фабрика задаёт интерфейс создания всех доступных типов продуктов, а каждая конкретная реализация фабрики порождает продукты одной из вариаций.
Клиентский код вызывает методы фабрики для получения продуктов, вместо самостоятельного создания с помощью оператора new.
При этом фабрика сама следит за тем, чтобы создать продукт нужной вариации.

В данном примере у создаваемых объектов - юнитов игры WarCraft есть 2 иерархии:
Раса - Orc, Human, Undead;
Типы юнитов - Warrior, Archer, Mage;
Естественнно у каждой рассы юниты со своими особенностями

У каждой расы есть своя фабрика:
HumanFactory
OrcFactory
UndeadFactory
Наследующиеся от Интерфейса IAbstractUnitFactory

За счет такого разделения мы можем в методе Main легко заменять фабрики с одной расы на другую и порождать юниты разных типов
не задумываясь о выборе расы, выбранная фабрика решает это за нас.