Я считаю, что шаблон абстрактной фабрики переоценен.
Прежде всего, не так часто , что у вас есть набор взаимосвязанных типов, которые вы хотите создать.
Во-вторых, уровень косвенности (абстракции), предоставляемый интерфейсами , обычно достаточен при работе с внедрением зависимостей.
Типичный пример WindowsGui против MacGui против ... где у вас есть кнопки WindowsButton, MacButton, WindowsScrollBar, MacScrollbar и т. Д., Часто проще реализовать путем определения concrete кнопок, полос прокрутки и т. Д. использование шаблона Visitor и / или Interpreter для обеспечения фактического поведения.