Mediumsolid

Что такое SOLID принципы?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

SOLID — пять принципов ОО-дизайна (Robert Martin):

  • SSingle Responsibility: одна причина для изменения, одна ответственность;
  • OOpen/Closed: открыт для расширения, закрыт для модификации (через полиморфизм, strategies, decorators);
  • LLiskov Substitution: подклассы substitutable для базового без нарушения поведения (не ослаблять постусловия, не усиливать предусловия);
  • IInterface Segregation: много специфичных интерфейсов лучше одного общего;
  • DDependency Inversion: зависеть от абстракций, не от конкретизаций (Spring DI — реализация D).
// D — Dependency Inversion: зависим от абстракции
class OrderService {
    private final PaymentGateway gateway;  // interface, не конкретный класс
    public OrderService(PaymentGateway gateway) { this.gateway = gateway; }
}

Признаки нарушения: god classes, switch по типам, deep inheritance hierarchies, изменение класса по разным причинам.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.