Ответ
SOLID — это пять ключевых принципов проектирования в объектно-ориентированном программировании, направленных на создание поддерживаемого и расширяемого кода.
- S (Single Responsibility) – Класс должен иметь одну и только одну причину для изменения (одну ответственность).
- O (Open/Closed) – Классы должны быть открыты для расширения, но закрыты для модификации.
- L (Liskov Substitution) – Объекты в программе должны быть заменяемыми на экземпляры их подтипов без изменения корректности программы.
- I (Interface Segregation) – Много специализированных интерфейсов лучше, чем один универсальный.
- D (Dependency Inversion) – Зависимости должны строиться на абстракциях (интерфейсах), а не на конкретных классах.
Пример нарушения и соблюдения SRP:
// Нарушение: класс управляет и данными пользователя, и рассылкой.
class User {
void saveToDatabase() { /* ... */ }
void sendEmail(String content) { /* ... */ }
}
// Соблюдение: ответственности разделены.
class UserRepository {
void save(User user) { /* ... */ }
}
class EmailService {
void sendEmail(User user, String content) { /* ... */ }
}
Следование этим принципам снижает связность кода и повышает его тестируемость.