Преимущества использования паттерна «абстрактная фабрика»:
- Гарантия совместимости между продуктами, созданными одним и тем же фабричным классом. 1
- Чистый код благодаря принципу открытости-закрытости: новые семейства продуктов можно вводить без нарушения существующего кода. 1
- Инкапсуляция ответственности за создание классов и самого процесса их создания. 2 Клиенту известны лишь интерфейсы абстрактных классов, через которые он может выполнять свою бизнес-логику с созданным семейством объектов. 2
- Свободная замена семейства продуктов. 2 Приложение может изменить конфигурацию продуктов, просто подставив новую конкретную фабрику. 2
Недостатки использования паттерна «абстрактная фабрика»:
- Усложнение кода программы за счёт множества дополнительных классов. 3
- Почти невозможно расширить семейство продуктов в дальнейшем. 2 Интерфейс абстрактной фабрики фиксирует набор продуктов, которые можно создать. 2 Для поддержки новых продуктов необходимо расширить интерфейс фабрики, то есть изменить класс абстрактной фабрики и все его подклассы. 2