Что означает принцип низкой связанности (Low Coupling) в архитектуре?

«Что означает принцип низкой связанности (Low Coupling) в архитектуре?» — вопрос из категории Архитектура, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Низкая связанность (Low Coupling) — это принцип проектирования, при котором модули или классы системы имеют минимальные зависимости друг от друга. Это снижает эффект «домино»: изменения в одном модуле с меньшей вероятностью затронут другие.

Пример высокой связанности (плохо):

class OrderService {
    private MySQLOrderRepository repository = new MySQLOrderRepository();
    // Класс жёстко зависит от конкретной реализации репозитория.
}

Пример низкой связанности (хорошо):

// 1. Определяем интерфейс (абстракцию)
interface OrderRepository {
    void save(Order order);
}

// 2. Реализуем его
class MySQLOrderRepository implements OrderRepository { ... }

// 3. Внедряем зависимость через интерфейс
class OrderService {
    private OrderRepository repository;
    public OrderService(OrderRepository repo) { // Внедрение зависимости (DI)
        this.repository = repo;
    }
}

Преимущества Low Coupling:

  • Удобство тестирования: Легко подменить реальную зависимость mock-объектом.
  • Гибкость: Реализацию можно изменить, не трогая клиентский код (следуя принципу DIP).
  • Понятность: Модули можно анализировать и понимать изолированно. Связанный принцип: Высокое зацепление (High Cohesion) — модуль должен решать одну четкую задачу.