![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| xaoc2 |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 22.10.2004 Репутация: нет Всего: нет |
Существует паттерн builder. И существует его его модифицированая версия для Java с внутренним классом, которая позволяет
заинициализировать объект значениями. При этом объект не обязан иметь сеттеры. То есть получаем безопасный ( не можем извне модифицировать) инициализированый объект. Ниже привожу пример. Вопрос: как развить эту идею, если я хочу иметь наследника MojKlass Например, MojKlass2 . Скорее всего продётся добавить метод newBuilderKlass2. Дальше не знаю стоит ли вводить новый класс буилдера в класс MojKlass2, но ! если бы я использовал функциональность MojKlassBuilder, то методы setPole1 возвращают обект MojKlassBuilder и не получилось ны сделать:
Имеется вииду, что в моя MojaKlasa2 будет добавлен такой код:
Как избежать дублирования кода ? Чтобы не писать полностью новый код для MojKlass2.MojKlassBuilder2 Вот работающий пример без наследования:
|
||||||||
|
|||||||||
| xaoc2 |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 22.10.2004 Репутация: нет Всего: нет |
Придумал такое решение, немного головоломное.... Думаю руководитель проекта не разрешит такое использовать:
Это сообщение отредактировал(а) xaoc2 - 28.10.2009, 17:40 |
||||||
|
|||||||
| 4EJIOBEK |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 26.3.2007 Репутация: нет Всего: 4 |
как вариант Это сообщение отредактировал(а) 4EJIOBEK - 28.10.2009, 17:09 |
||||||
|
|||||||
| xaoc2 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 22.10.2004 Репутация: нет Всего: нет |
Не, не подойдёт, потому что классы MoyKlass и MoyKlass2 не имеют сеттеров. Это основная идея этого паттерна - создать немодифицируемый извне объект. |
|||
|
||||
| Andy_L20066 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 10.3.2008 Репутация: нет Всего: 1 |
вот просто для интереса запустил предыдущую програму, модифицыровал немножко, вышло что-то вот такое, но работает
Это сообщение отредактировал(а) Andy_L20066 - 28.10.2009, 18:26 |
|||
|
||||
| 4EJIOBEK |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 26.3.2007 Репутация: нет Всего: 4 |
что мешает немного подправить?)
и подправить код MoyKlass1 соответсвенно Это сообщение отредактировал(а) 4EJIOBEK - 28.10.2009, 18:29 |
|||
|
||||
| xaoc2 |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 22.10.2004 Репутация: нет Всего: нет |
4EJIOBEK:
Любой сеттер из старого класса возвращает класс MoyKlassBuilder из MoyKlass, хотя он называется также как MoyKlassBuilder, но это всегда MoyKlass.MoyKlassBuilder а не MoyKlass2.MoyKlassBuilder |
||||
|
|||||
| 4EJIOBEK |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 26.3.2007 Репутация: нет Всего: 4 |
сорри накидал в прошлый раз, что пришло в голову, сам не проверял
немного реабилитируюсь, конечно не оч. красиво получилось
|
||||||||
|
|||||||||
| math64 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
|
||||
|
|||||
![]()
|
| Правила форума "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. |