![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| kornata |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 25.2.2010 Репутация: нет Всего: нет |
Здравствуйте! Скажите, в каких случаях статический метод фабрика полезнее конструктора и есть ли минусы в использовании фабрики вместо конструктора?
|
|||
|
||||
| MaxPayneC |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 18.2.2006 Репутация: 5 Всего: 9 |
Этот вопрос не имеет однозначного ответа.
Лично я придерживаюсь мнения, что фабрика нужна, когда много раз нужно получать объекты, создание которых нетривиально (отлично от присвоения полям значений, переданных в аргументах конструктора). |
|||
|
||||
| kornata |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 25.2.2010 Репутация: нет Всего: нет |
Хм, спасибо за ответ! Да я тоже считаю что фабрика нужна ... и что, в ней нет никаких недостатков?
|
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Гм... Не ближе ли это к паттерну Builder, чем к фабрике? -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
Я бы больше акцентировал значение фабрики в контексте понижения coupling'a. Она может декларировать создание реализаций интерфейсов без раскрытия конкретных классов, которые могут быть анонимными или закрытыми в пакете. Выступая как часть шаблона проектирования Facade, она позволяет во многих случаях создавать эффективные "черные ящики", пряча детали внутренней реализации.
О недостатках: вы увеличиваете количество классов и (спорно) затрудняете понимание кода для не слишком опытных коллег. -------------------- Opinions are like assholes — everybody has one |
|||
|
||||
| kornata |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 25.2.2010 Репутация: нет Всего: нет |
Спасибо!
|
|||
|
||||
| Christoph |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 667 Регистрация: 23.1.2008 Где: Харьков Репутация: нет Всего: 11 |
Решил не создавать новую тему, решил тут спросить...
Я не понимаю какая роль этого патерна, скрыть то как создается объект? Вот пример кода с книги
затем вызов
Как то все так смахивает на полиморфизм, я просто не понимаю смысл так все скрывать...и создавать еще абстрактный класс,ShapeFactory, его роль нулевая... я наверное что то не понимаю в этом патерне, если можно, спасибо -------------------- ![]() |
||||||
|
|||||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
В моем понимании, фабрика имеет смысл, когда нужно создавать набор объектов, обладающих каким-то общим признаком. Например, представим себе приложение, имеющее GUI для монитора и для мобильника. Тогда:
Пример не слишком удачный, но идея такая. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Christoph |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 667 Регистрация: 23.1.2008 Где: Харьков Репутация: нет Всего: 11 |
как по мне это даже нельзя назвать патерном
-------------------- ![]() |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Половина паттернов и того не имеет -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |