Примечание. Вопросы находятся в конце сообщения.
Я прочитал другие потоки stackoverflow, касающиеся абстрактной фабрики и фабричного метода . Я понимаю цель каждого шаблона. Однако мне не совсем понятно определение.
Factory Method определяет интерфейс для создания объекта, но позволяет подклассам решать, какие из них создавать. Заводской метод позволяет классам откладывать создание экземпляров до подклассов.
Напротив, абстрактная фабрика предоставляет интерфейс для создания семейств связанных или зависимых объектов без указания их конкретных классов.
Abstract Factory выглядит очень похож на метод фабрики . Я нарисовал несколько классов UML, чтобы проиллюстрировать свою точку зрения.
Заметка:
- Диаграмма взята с сайта www.yuml.com, поэтому они не совсем ориентированы. Но это бесплатная услуга :).
- Диаграммы могут быть не идеальными. Я все еще изучаю шаблоны проектирования GoF .
Заводской метод:
Абстрактная фабрика (только 1 участник):
Абстрактная фабрика (больше участников):
Вопросы:
- Если у абстрактной фабрики только один создатель и один продукт, остается ли это паттерн абстрактная фабрика ? (интерфейс для создания семей)
- Может ли конкретный создатель Factory Method быть создан из интерфейса или он должен быть из класса? (классы откладывают экземпляры до подклассов)
- Если у абстрактной фабрики может быть только один создатель и один продукт, является ли единственная разница между абстрактной фабрикой и фабричным методом в том, что создателем первого является интерфейс, а создателем второго - класс?