![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
redwhite90 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 14.7.2011 Репутация: нет Всего: нет |
Помогите почувствовать разницу между фабричным методом и абстрактной фабрикой - смотрю на 2 диаграммы и не вижу разницы.
http://s1.ipicture.ru/uploads/20130309/zxu8iqhh.bmp из вычитанного везде - делаю вывод о разном количестве интерфейсов продуктов. Но это как-то нелогично. |
|||
|
||||
jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
Имхо FactoryMethod - вырожденный случай AbstractFactory для одного продукта. AbstractFactory оперирует целым семейством продуктов, каждый из которых имеет собственный интерфейс. Так что AbstractFactory добавляет еще один уровень абстракции к FactoryMethod
-------------------- Opinions are like assholes — everybody has one |
|||
|
||||
redwhite90 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 14.7.2011 Репутация: нет Всего: нет |
||||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
redwhite90, картинка будет такая же, но будет не один factoryMethod, а несколько - createProductA(), createProductB()...
Грубо говоря, Factory Method - это просто альтернатива конструктору (зачастую более удобная). Пример:
Просто способ скрыть создание обьекта, не вызывая конструктор явно. Фабрика же - это гораздо более развесистая штука, позволяющая создавать не объект, а семейство родственных объектов. Канонический пример - интерфейс UiFactory с методами createButton, createMenu, etc с имплементациями под разные платформы или оконные менеджеры. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
redwhite90 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 14.7.2011 Репутация: нет Всего: нет |
Если ориентироваться на картинки, то моё мнение сейчас такое:
клиентом(тот кто использует полученный продукт) в фабричном методе является creator(см. картинку), а в абстрактной фабрике есть надстройка над creator, которая собственно и позволяет делать "семейства". Поправьте, если не прав. Добавлено через 26 секунд эта надстройка - есть клиент |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |