Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Взаимные зависимости между пакетами. Нормально ли это? / 17 сообщений из 17, страница 1 из 1
28.09.2006, 20:01:21
    #34020362
Vetal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимные зависимости между пакетами. Нормально ли это?
Всем привет!

Есть net.mycompany.package1 и net.mycompany.package2. Классы из package1 активно используют классы из package 2 и наоборот.

Нормальная ли такая ситуация (взаимозависимость пакетов)? Чем она грозит?

Всем заранее спасибо!
...
Рейтинг: 0 / 0
28.09.2006, 21:45:25
    #34020472
unicornmirage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимные зависимости между пакетами. Нормально ли это?
в зависимости от архитектуры, предоставляемой этой зависимостью это может быть в разных случаях по-разному. но, вцелом лично мне кажется, что такие зависимости нужно лучше исключить, проведя рефакторинг.
можно построить модель в виде графа с зависимостями и переходами и выделить общую функциональность и оформить в виде отдельного класса. Иногда можно обоюдно-зависимые классы внести как внутренний класс (либо как анонимный). Все зависит от задачи и архитектуры.
...
Рейтинг: 0 / 0
29.09.2006, 06:36:12
    #34020681
artgonch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимные зависимости между пакетами. Нормально ли это?
А по-моему, циклические зависимости ни при какой архитектуре не должны появляться
...
Рейтинг: 0 / 0
29.09.2006, 12:55:30
    #34021859
unicornmirage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимные зависимости между пакетами. Нормально ли это?
artgonchА по-моему, циклические зависимости ни при какой архитектуре не должны появляться
чёйто! не должны появляться - а появляются. вообще это особенно заметно в сложных структурах данных
...
Рейтинг: 0 / 0
29.09.2006, 13:06:27
    #34021909
Vetal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимные зависимости между пакетами. Нормально ли это?
Ну ладно, с циклическими зависимостями между пакетами я понял: это плохо... А что скажете насчет взаимозависимостей между jar-файлами? Нормально ли это?
...
Рейтинг: 0 / 0
29.09.2006, 13:06:44
    #34021912
artgonch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимные зависимости между пакетами. Нормально ли это?
:(
...
Рейтинг: 0 / 0
29.09.2006, 13:09:31
    #34021927
artgonch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимные зависимости между пакетами. Нормально ли это?
Я бы так точно не делал....
Тут уже выше писали о вынесении обшей функциональности в отдельный модуль/JAR-файл. Лучше так поступить. Древовидную структуру легче поддерживать, чем циклический граф
...
Рейтинг: 0 / 0
29.09.2006, 14:09:47
    #34022207
unicornmirage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимные зависимости между пакетами. Нормально ли это?
VetalНу ладно, с циклическими зависимостями между пакетами я понял: это плохо... А что скажете насчет взаимозависимостей между jar-файлами? Нормально ли это?

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

опишите приблизительно задачи которые вы решаете
...
Рейтинг: 0 / 0
29.09.2006, 14:17:30
    #34022245
Vetal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимные зависимости между пакетами. Нормально ли это?
unicornmirageопишите приблизительно задачи которые вы решаете

Есть объекты, которые представляют собой сущности бизнес-логики и отображаются на сайте. Эти объекты подчитываются из базы данных. Они находятся в первом пакете.

Второй пакет - это Utils, который содержит утилиты, в том числе утилиты работы с url-ами.

Второй пакет использует первый, потому что методы из него вычитывают параметры сущности, и исходя из этих параметров строят конечные урлы, которые на сайте ведут к этим сущностям.

Первый пакет использует второй, потому что части урлов рассчитываются в первом пакете и хранятся в этом же пакете. Я таким образом кеширую логику формирования урла.
...
Рейтинг: 0 / 0
29.09.2006, 14:21:48
    #34022268
unicornmirage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимные зависимости между пакетами. Нормально ли это?
Vetal unicornmirageопишите приблизительно задачи которые вы решаете

Есть объекты, которые представляют собой сущности бизнес-логики и отображаются на сайте. Эти объекты подчитываются из базы данных. Они находятся в первом пакете.

Второй пакет - это Utils, который содержит утилиты, в том числе утилиты работы с url-ами.

Второй пакет использует первый, потому что методы из него вычитывают параметры сущности, и исходя из этих параметров строят конечные урлы, которые на сайте ведут к этим сущностям.

Первый пакет использует второй, потому что части урлов рассчитываются в первом пакете и хранятся в этом же пакете. Я таким образом кеширую логику формирования урла.

ну если у вас бизнес-сущности (бины ваши) ссылаются на некие утилитарные методы в других пакетах, тоесли они объявлены как final, либо как интерфейсы то ничего страшного наверное нет...
...
Рейтинг: 0 / 0
29.09.2006, 15:00:40
    #34022488
Vetal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимные зависимости между пакетами. Нормально ли это?
unicornmirageну если у вас бизнес-сущности (бины ваши) ссылаются на некие утилитарные методы в других пакетах, тоесли они объявлены как final, либо как интерфейсы то ничего страшного наверное нет...
А какая разница, final они или нет?
...
Рейтинг: 0 / 0
29.09.2006, 15:05:06
    #34022510
unicornmirage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимные зависимости между пакетами. Нормально ли это?
Vetal
А какая разница, final они или нет?

ну в твоем случае это наверно будет существенно, ты ведь не можешь знать заранее тот метод который используется из другого пакета, изменяется или нет кем то другим.
использование интерфейсов также может тебя абстрагировать от версий реализации в других пакетах.
...
Рейтинг: 0 / 0
29.09.2006, 15:12:27
    #34022539
Jozic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимные зависимости между пакетами. Нормально ли это?
unicornmirageну если у вас бизнес-сущности (бины ваши) ссылаются на некие утилитарные методы в других пакетах, тоесли они объявлены как final, либо как интерфейсы то ничего страшного наверное нет...А если утилиты ссылаюцца на пакеты бизнес-логики, то много страшного наверное есть :)
Чесно говоря, утилитами их назвать язык не поворачиваецца :)
...
Рейтинг: 0 / 0
29.09.2006, 15:15:07
    #34022549
unicornmirage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимные зависимости между пакетами. Нормально ли это?
Jozic unicornmirageну если у вас бизнес-сущности (бины ваши) ссылаются на некие утилитарные методы в других пакетах, тоесли они объявлены как final, либо как интерфейсы то ничего страшного наверное нет...А если утилиты ссылаюцца на пакеты бизнес-логики, то много страшного наверное есть :)
Чесно говоря, утилитами их назвать язык не поворачиваецца :)

там говорилось об зависимости пакетов, и я в самом начале сказал что в любом случае рефакторинг нужен - тоесть по моему мнению от таких зависимостей нужно избавляться. просто если уже есть проект, надо делать это поэтапно: вводить интерфейсы, и т.п.
...
Рейтинг: 0 / 0
29.09.2006, 15:22:32
    #34022590
unicornmirage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимные зависимости между пакетами. Нормально ли это?
кстати насчет этой схемы
авторЕсть объекты, которые представляют собой сущности бизнес-логики и отображаются на сайте. Эти объекты подчитываются из базы данных. Они находятся в первом пакете.

Второй пакет - это Utils, который содержит утилиты, в том числе утилиты работы с url-ами.

Второй пакет использует первый, потому что методы из него вычитывают параметры сущности, и исходя из этих параметров строят конечные урлы, которые на сайте ведут к этим сущностям.

Первый пакет использует второй, потому что части урлов рассчитываются в первом пакете и хранятся в этом же пакете. Я таким образом кеширую логику формирования урла.

лучше в бинах не хранить методы работы с ними а вынести в отдельные обработчики.
...
Рейтинг: 0 / 0
29.09.2006, 15:26:59
    #34022611
unicornmirage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимные зависимости между пакетами. Нормально ли это?
еще раз: чтобы грамотно провести рефакторинг - нужно построить модель существующей архитектуры которую вы ходите переделать. модель должна состоять из двух под-моделей:
1) автоматная - которая иллюстрирует состояние вашей системы и условия перехода, а также иллюстрирует структуру вашей системы и топологию.
2) модель поведения и последовательностей - как в динамике ведет ваша система

на базе этой модели можно проанализирвоать все зависимости и переделать архитектуру
(я так понимаю, сторонники этого подхода - Дейкстра, Кнут и пр...) - тоесть постоянное сопровождение проектирвоания и моделей. Кстати этот подход перекликается с существущей концепцией MDA (Model Driven Architecture)

Второй подход - рефакторинг- постепенное изменение кода...
Выбирать вам.
...
Рейтинг: 0 / 0
29.09.2006, 17:19:15
    #34023132
NotGonnaGetUs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимные зависимости между пакетами. Нормально ли это?
Vetal
Второй пакет использует первый, потому что методы из него вычитывают параметры сущности, и исходя из этих параметров строят конечные урлы, которые на сайте ведут к этим сущностям.

Первый пакет использует второй, потому что части урлов рассчитываются в первом пакете и хранятся в этом же пакете. Я таким образом кеширую логику формирования урла.

Это полный пердимокль. Как можно "кешировать логику"?!

У тебя одни и теже объекты (ссылки) высчитываются в двух разных пакетах.
Вывод? Убрать создание url из обоих пакетов (строить урл-ы в бизнес логике вообще нарушение мвк).


Код: plaintext
1.
2.
3.
4.
5.
6.
          ___________________________
         |                           |
         |                           V
представление ->  url creator -> бизнес логика -> утилиты
                      |                             /\
                       \____________________________/
       


Ещё лучше превратить url creator в один из классов относящихся к представлению.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Взаимные зависимости между пакетами. Нормально ли это? / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]