Фабричный шаблон против Фабричный шаблон - PullRequest
1 голос
/ 01 апреля 2012

Может кто-нибудь, пожалуйста, дайте мне знать, почему введен шаблон проектирования FactoryMethod?Поскольку мой вопрос в том же самом, может быть достигнуто с помощью самого Factory Pattern?

Например, если я вижу разницу между Factory Pattern и FactoryMethod Pattern, то Factory Pattern возвращает конкретное дополнение, где, как FactoryMethod Pattern возвращает FactoryОбъект в качестве возвращаемого типа ??

Скажите, пожалуйста, почему появился FactoryMethod ??

Ответы [ 4 ]

1 голос
/ 01 апреля 2012

В двух словах:
Factory Method - это шаблон проектирования, который «скрывает» реализацию конкретных типов от остальной части вашего кода, тем самым обеспечивая слабую связь.

Abstract Factory - это шаблон проектирования, который введен для обеспечения различных типов фабрик , которые отвечают за создание определенной группы конкретных типов .Таким образом, вы можете переключаться между абстрактными фабриками и в результате получать в конечном итоге разные конкретные экземпляры объектов в вашем коде.

Итак, Abstract Factory - это шаг вверх, т.е. генерация Factory Method.В простых проектах последнее адекватно.В проектах со сложной иерархией требуется Abstract Factory.

0 голосов
/ 19 декабря 2012

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

в то время как в случае фабричного метода есть абстракция над фабричным классом, и он производит один набор объектов продукта.

0 голосов
/ 01 апреля 2012

Шаблон AbstractFactory - еще один уровень абстракции.Пользователь не знает о типе объекта, который он получит, и его это не интересует.AbstractFactory решает, какой метод используется для создания конкретного объекта, который получит пользователь.

В фабрике методов пользователь решает, какой метод использовать для создания объекта, и знает, что он получает.Но это не всегда касается его.

Если я запрашиваю кнопку в фабрике методов, мне нужно знать, хочу ли я кнопку LinuxButton, WindowsButton или OSXButton.В AbstractFactory я запрашиваю кнопку, получаю кнопку ... и AbstractFactory решает, как создается кнопка, зная нашу ОС.

0 голосов
/ 01 апреля 2012

Как вы можете прочитать в вики «Шаблон абстрактной фабрики, шаблон, часто реализуемый с использованием фабричных методов».

Посмотри эту картинку http://upload.wikimedia.org/wikipedia/commons/a/a7/Abstract_factory.svg

Шаблоны проектирования часто / всегда связаны друг с другом, и таким образом они показывают нам концепции шаблонов.

С уважением, Лукаш.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...