Наконец, серьезно начав пытаться выучить некоторые базовые паттерны (очень поздно в карьере, но это уже другая история), я пытаюсь разобраться в различиях между Фабричным паттерном и Абстрактной Фабрикой.
Каковы основные различия между этими двумя моделями?
Я понимаю, что Фабричный метод создает объекты с помощью наследования, а Абстрактная Фабрика делает это с помощью композиции объектов, но с практической точки зрения у меня все еще возникают проблемы с визуализацией, как именно они работают.
design-patterns
factory-method
Phil.Wheeler
источник
источник
new
это не метод (в некоторых - по общему признанию - объектных системах).Ответы:
Фабричный метод , как правило , классифицируются по распределительному заявлению , где каждый случай возвращает другой класс, используя тот же самый корневой интерфейс , так что вызывающий код не должен принимать решения о реализации.
Подумайте о фабрике валидаторов кредитных карт, которая возвращает разные валидаторы для каждого типа карт.
Abstract Factory , где у вас есть несколько бетонных фабричных классов (не фабричные методов) , полученных из одного интерфейса , который может возвращать множество различных типов из различных методов.
Подумайте о менеджере по шахматам с разными классами для каждого набора правил.
Абстрактная фабрика, так же как и стратегия, часто выбирается с помощью фабричного метода, но нет необходимости объединять их, так что это ее собственный шаблон.
источник