Mediumsolid
Что такое SOLID принципы?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
SOLID — пять принципов ОО-дизайна (Robert Martin):
- S — Single Responsibility: одна причина для изменения, одна ответственность;
- O — Open/Closed: открыт для расширения, закрыт для модификации (через полиморфизм, strategies, decorators);
- L — Liskov Substitution: подклассы substitutable для базового без нарушения поведения (не ослаблять постусловия, не усиливать предусловия);
- I — Interface Segregation: много специфичных интерфейсов лучше одного общего;
- D — Dependency 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 подскажет развёрнутый ответ в реальном времени.