Кросс-модульная связь - PullRequest
       8

Кросс-модульная связь

2 голосов
/ 18 февраля 2010

Проще говоря, имеет смысл сгруппировать части приложения в соответствующие модули.

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

По обычным принципам существенно не идеально, чтобы эти клиентские модули знали внутренние классы пользовательского модуля и т. Д., Что подводит меня к вопросу о том, как лучше всего организовать эту межмодульную связь.

До сих пор я думал, что модуль может иметь класс API с условным именем, через который другие модули могут «запрашивать» модуль. Этот подход все еще приведет к определенной зависимости, но, по крайней мере, только от другого модуля / его API.

Ваши мысли по этому поводу будут приветствоваться.

Спасибо заранее, Джеймс

Ответы [ 3 ]

2 голосов
/ 18 февраля 2010

Вы можете назвать пользовательский модуль «библиотекой». Это изменение терминологии может помочь уточнить, какие модули должны быть верхнего уровня, а какие управляют действиями более низкого уровня, которые предназначены для использования несколькими другими модулями. PHP Framework Framework использует этот подход.

0 голосов
/ 18 февраля 2010

Возможно, вы захотите прочитать о «внедрении зависимости». Symfony Components предлагает решение для внедрения зависимостей и содержит множество хороших материалов для чтения / примеров по теме.

0 голосов
/ 18 февраля 2010

Что ж, «модуль» очень расплывчатый - то, что определяет модуль, может сильно различаться от системы к системе.

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

Я полагаю, в вашем сценарии вы могли бы иметь класс контроллера (как в C из MVC) между вашими модулями, который знал бы внутренности каждого и мог бы служить мостом связи.

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