2009-06-02 6 views
0

Создание URL-адреса в моем веб-приложении отвечает за уровень презентации. Теперь рассмотрим другой модуль, отправляющий сообщения, содержащие URL-адреса. (Не обязательно запускается из презентации). Однако уровень представления должен знать о модуле (поскольку может быть триггером, и пользователь может настроить модуль с использованием интерфейса).Модуль backend нуждается в URL-адресах из уровня представления - как избежать циклической зависимости?

I.e. модули зависят друг от друга ... любые идеи о том, как можно избежать этой циклической зависимости?

Сохранение URL-адресов в моей базе данных не кажется мне правильным, то же самое касается слияния двух модулей.

Любая помощь или вдохновение очень ценится. Спасибо.

ответ

0

Не помогло бы здесь пользоваться интерфейсом? Как насчет указания и «потребления» интерфейса UrlGenerator в вашем бэкэнд-модуле и реализации его в вашем слое презентации?

В сочетании с каким-либо механизмом впрыска зависимостей (заводская схема для построения клиентов UrlGenerator, таких как Spring или Guice, шаблон Locator), это приведет к поломке циклических зависимостей времени компиляции.

1

Создать третий модуль, который оба модуля знают, но они не знают друг друга?

+0

хммм, может быть, я просто не понимаю, что вы направляете, но ... если А зависит от B, и наоборот, и мы затыкать C между ними, у нас есть две циклические ссылки: A <-> C <-> B B Если вы предлагаете вложить создание URL-адресов в третий проект: я не думаю, что это возможно ... классы страниц необходимы для установки URL-адресов, URL-адреса необходимы для создания ссылок на страницах .... –

+1

Нет, сделайте A-> C и B-> C зависимостями. –