powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Взаимные зависимости между пакетами. Нормально ли это?
17 сообщений из 17, страница 1 из 1
Взаимные зависимости между пакетами. Нормально ли это?
    #34020362
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

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

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

Всем заранее спасибо!
...
Рейтинг: 0 / 0
Взаимные зависимости между пакетами. Нормально ли это?
    #34020472
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в зависимости от архитектуры, предоставляемой этой зависимостью это может быть в разных случаях по-разному. но, вцелом лично мне кажется, что такие зависимости нужно лучше исключить, проведя рефакторинг.
можно построить модель в виде графа с зависимостями и переходами и выделить общую функциональность и оформить в виде отдельного класса. Иногда можно обоюдно-зависимые классы внести как внутренний класс (либо как анонимный). Все зависит от задачи и архитектуры.
...
Рейтинг: 0 / 0
Взаимные зависимости между пакетами. Нормально ли это?
    #34020681
artgonch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А по-моему, циклические зависимости ни при какой архитектуре не должны появляться
...
Рейтинг: 0 / 0
Взаимные зависимости между пакетами. Нормально ли это?
    #34021859
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artgonchА по-моему, циклические зависимости ни при какой архитектуре не должны появляться
чёйто! не должны появляться - а появляются. вообще это особенно заметно в сложных структурах данных
...
Рейтинг: 0 / 0
Взаимные зависимости между пакетами. Нормально ли это?
    #34021909
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ладно, с циклическими зависимостями между пакетами я понял: это плохо... А что скажете насчет взаимозависимостей между jar-файлами? Нормально ли это?
...
Рейтинг: 0 / 0
Взаимные зависимости между пакетами. Нормально ли это?
    #34021912
artgonch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:(
...
Рейтинг: 0 / 0
Взаимные зависимости между пакетами. Нормально ли это?
    #34021927
artgonch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы так точно не делал....
Тут уже выше писали о вынесении обшей функциональности в отдельный модуль/JAR-файл. Лучше так поступить. Древовидную структуру легче поддерживать, чем циклический граф
...
Рейтинг: 0 / 0
Взаимные зависимости между пакетами. Нормально ли это?
    #34022207
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VetalНу ладно, с циклическими зависимостями между пакетами я понял: это плохо... А что скажете насчет взаимозависимостей между jar-файлами? Нормально ли это?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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


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