Абстрактная фабрика - это просто набор фабричных методов? - PullRequest
3 голосов
/ 11 июня 2011

Абстрактная фабрика - это просто набор фабричных методов?Или есть какая-то другая разница между этими образцами?

Ответы [ 3 ]

2 голосов
/ 17 июня 2011

Согласно Design Patterns , с. 95:

AbstractFactory классы часто реализовано с использованием заводских методов, но они также могут быть реализованы с использованием Прототип.

1 голос
/ 11 июня 2011

Основное отличие ИМХО в том, что абстрактная фабрика - это абстрактная , и это означает, что для использования она должна быть разделена на подклассы.Методы фабрики не могут быть разделены на подклассы, поэтому вы не можете использовать различные реализации построенных объектов.

Если вы планируете предоставить несколько реализаций построенных объектов, абстрактная фабрика предпочтительнее.Также, если вы используете модульное тестирование, абстрактная фабрика предоставляет вам лучший тестируемый код, поскольку вы можете позволить фиктивной фабрике создавать фиктивные объекты для тестирования.

Абстрактная фабрика обычно объединяет несколько фабричных методов, которые являются связными.

0 голосов
/ 11 июня 2011

Дизайн Abstract Factory берет часть программы и инкапсулирует ее.

Метод фабрики аналогично определяет интерфейс для создания объектов.

Разница: Abstract Factory обычно реализуется как Singleton, который создаетсемейство предметов.Обычно он устанавливается во время загрузки приложения и не изменяется впоследствии.

С другой стороны, Factory Method обычно не является тематической группой или синглтоном.Вместо этого это реализация, которая позволяет гибко создавать объекты.Таким образом, он не обязательно создает семейство объектов

Сходство : оба схожи в том, что они оба отделяют создание объекта от его кода.

Вот хороший pdf файл.Проверьте это.

...