Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> абстрактная фабрика и фабричный метод, разница 
:(
    Опции темы
redwhite90
Дата 9.3.2013, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 14.7.2011

Репутация: нет
Всего: нет



Помогите почувствовать разницу между фабричным методом и абстрактной фабрикой - смотрю на 2 диаграммы и не вижу разницы.
http://s1.ipicture.ru/uploads/20130309/zxu8iqhh.bmp

из вычитанного везде -  делаю вывод о разном количестве интерфейсов продуктов. Но это как-то нелогично.
PM MAIL   Вверх
jk1
Дата 10.3.2013, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Имхо FactoryMethod - вырожденный случай AbstractFactory для одного продукта. AbstractFactory оперирует целым семейством продуктов, каждый из которых имеет собственный интерфейс. Так что AbstractFactory добавляет еще один уровень абстракции к FactoryMethod


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
redwhite90
Дата 10.3.2013, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 14.7.2011

Репутация: нет
Всего: нет



я тоже вроде как в голове осознаю, что дополнительный уровень абстракции создаётся, но путаюсь в картинках

вот это uml фабричного метода:


user posted image

куда абстракцию надо добавить? я просто очень запутался  в диаграммах.
PM MAIL   Вверх
batigoal
Дата 11.3.2013, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



redwhite90, картинка будет такая же, но будет не один factoryMethod, а несколько - createProductA(), createProductB()...

Грубо говоря, Factory Method - это просто альтернатива конструктору (зачастую более удобная). Пример: 
Код

Response response = Response.fromRequest(request);

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

Фабрика же - это гораздо более развесистая штука, позволяющая создавать не объект, а семейство родственных объектов. Канонический пример - интерфейс UiFactory с методами createButton, createMenu, etc с имплементациями под разные платформы или оконные менеджеры.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
redwhite90
Дата 11.3.2013, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 14.7.2011

Репутация: нет
Всего: нет



Если ориентироваться на картинки, то моё мнение сейчас такое:
клиентом(тот кто использует полученный продукт) в фабричном методе является creator(см. картинку), а в абстрактной фабрике есть надстройка над creator, которая собственно и позволяет делать "семейства".
Поправьте, если не прав.

Добавлено через 26 секунд
эта надстройка - есть клиент
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0624 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.