Встречается на собеседованиях • сегодня

Как реализуешь паттерн Low Coupling при Refactoring

Для снижения связанности (Low Coupling) при рефакторинге применяют:

  1. Интерфейсы вместо конкретных классов
    java
    interface PaymentProcessor {
        void processPayment();
    }
    
    class CreditCardProcessor implements PaymentProcessor {
        public void processPayment() { /* logic */ }
    }
    
    class OrderService {
        private PaymentProcessor processor; // Зависим от абстракции
    }
  1. Dependency Injection – внедрение зависимостей через конструктор/сеттеры

    java
    class OrderService {
        private final PaymentProcessor processor;
        
        public OrderService(PaymentProcessor processor) {
            this.processor = processor; // DI через конструктор
        }
    }
  2. Фасады/Медиаторы – скрытие сложных взаимодействий за простым интерфейсом

  3. Событийная модель – вместо прямых вызовов используем Publisher-Subscriber

Ключевые принципы:

  • Минимизация прямых ссылок между классами
  • Замена наследования на композицию
  • Использование слоев абстракции

Пример рефакторинга:

java
// Было (высокая связанность)
class ReportGenerator {
    private MySQLDatabase db; // Прямая зависимость
}

// Стало
class ReportGenerator {
    private DatabaseInterface db; // Зависимость от интерфейса
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы