Зачем нам нужен абстрактный шаблон дизайна фабрики? - PullRequest
115 голосов
/ 17 февраля 2010

Большая часть определения гласит:

Абстрактная фабрика предоставляет интерфейс для создания семейств связанные объекты без указания их конкретные классы

Что такое абстрактный шаблон фабрики, поскольку мы можем решить задачу, создав объект самого конкретного класса. Почему у нас есть фабричный метод, который создает объект класса Concrete?

Пожалуйста, предоставьте мне пример из реальной жизни, где я должен реализовать шаблон abstractFactory?

Ответы [ 13 ]

0 голосов
/ 04 марта 2015

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

0 голосов
/ 17 февраля 2010

Чтобы ответить прямо на ваш вопрос, вы, вероятно, можете уйти, не используя такой шаблон проектирования.

Однако имейте в виду, что большинство проектов в реальном мире развиваются, и вы хотите обеспечить некоторую расширяемость, чтобы сделать ваш проект перспективным.

По моему опыту, в большинстве случаев реализуется Фабрика, и по мере роста проекта она превращается в более сложные шаблоны проектирования, такие как Абстрактная Фабрика.

0 голосов
/ 17 февраля 2010

Я считаю, что шаблон абстрактной фабрики переоценен.

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

Во-вторых, уровень косвенности (абстракции), предоставляемый интерфейсами , обычно достаточен при работе с внедрением зависимостей.

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

...