![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Пусть есть два startup класса, запускающие приложение в разных режимах, вот их структура:
Оба класса отрастают от одного родителя. В обоих методах startUp() важен порядок инициализации сиглетонов, в то же время некоторые сиглетоны могут присутствовать в одном классе и отсутствовать в другом. Задача: Упростить инициализацию и по возможности производить ее в одном месте. Это может быть метод в классе Parent, возможно эту задачу может решить Spring - вопрос как это сделать? -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| jeank |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 26.6.2008 Где: Калининград Репутация: нет Всего: 1 |
Ну насколько я помню - именно в самом синглетоне создают метод getInstance - а уж там в логике метода определяется существует ли экземпляр или нет, и если есть то вернуть, если нет то создать и вернуть.
Вот про порядок инициализации немного недопер, т.к. инициализация может идти в разных классах в зависимости от того кто первый, то и молодец )). |
|||
|
||||
| ivg |
|
|||
![]() Autonomous R&D ![]() ![]() Профиль Группа: Участник Сообщений: 686 Регистрация: 8.2.2006 Где: Екатеринбург Репутация: 32 Всего: 81 |
Сделать инициализацию в синглтонах ленивой. Ну и пусть они сами разбираются со своими зависимостями.
|
|||
|
||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
jeank, ivg, не понял как это может помочь решить мою проблему. Давайте я приведу еще один пример. Допустим у вас следующие набор вызовов в методах класса A и B:
-------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| ivg |
|
|||
![]() Autonomous R&D ![]() ![]() Профиль Группа: Участник Сообщений: 686 Регистрация: 8.2.2006 Где: Екатеринбург Репутация: 32 Всего: 81 |
Вообще я имел ввиду что-то типа такого:
Ну то есть идея понятна? Singleton зависит от инициализации OtherSingleton и эта зависимость прописывается явно. В другом варианте можно, например, вынести метод init(); в интерфейс, и вызывать в цикле. Порядок вызова будет определяться составом массива. Вообще надо смотреть архитектуру целиком, чтобы что-то конкретное предлагать, ну а так - вот. Это сообщение отредактировал(а) ivg - 24.3.2009, 21:27 |
|||
|
||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
ivg, Ты все правильно понял. Вот такие зависимости сплошь и рядом, более того OtherSingleton чаще всего (а вернее всегда) отсутствует серди вызовов в методе startUp(), но опять же моя задача состоит в том чтобы все зависимости были прописаны в одном месте.
Предлагаю представить, что в описанном ivg, примере Singleton.getInstance(); вызывается в двух startUp() классах. И вот вам пришла идея зарефакторить один из startUp метдов, что вы успешно и сделали, но как только вы пускаете приложение в режиме где инициализация проходит из второго класса оказывается что вам надо проделать все то же самое что вы уже проделали только для первого класса. Проблема усложняется тем что таких вот signleton классов, которые инициализируют приложение около 20-25 штук, и уже не раз возникали проблемы, которые и породили вопрос в этом треде. Поэтому прописывать зависимости внутри singleton'ов как ты предлагаешь - это означает выкопать себе могилу, глубже чем она уже вырыта. -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |