теория
Смотри. Ты уже потрогал руками — и обжёгся об неё в первый же день. Теперь давай спокойно, без паники, разберём, что это за зверь. Начнём с самого слова, которого все так боятся.
Coupling — от латинского copulare: «co» — вместе, «apere» — скреплять. Coupled значит «соединённый». Так что каждый раз, встречая «связанность», мысленно подставляй «соединённость»: «сервисы сильно связаны» = «сервисы сильно соединены». Уже не так грозно, да?
И вот первый сюрприз: связанность — вообще не дефект. Это свойство любой системы на свете. Шестерни в часах связаны, органы в теле связаны, планеты — гравитацией. А что такое система? Всего три вещи: компоненты, взаимодействия между ними и общая цель. Убери взаимодействия — останется коробка деталей, которая не показывает время.
С софтом ровно то же. Модули, сервисы, классы «Ярмарки» связаны, чтобы система делала своё дело — продавала фермерские продукты. Отсюда три вывода, и они многих удивляют:
Мы привыкли рисовать «коробки» — сервисы и модули. Но дизайн системы — это в той же мере линии между коробками: какое знание по ним течёт и какому знанию запрещено пересекать границу.