Ответ
Наиболее фундаментальным принципом SOLID часто называют Принцип единственной ответственности (Single Responsibility Principle - SRP). Он формулируется как: «Класс должен иметь лишь одну причину для изменения».
Почему SRP — основа:
- Снижает связность (coupling): Класс, делающий одно, меньше зависит от других частей системы.
- Повышает сцепление (cohesion): Все методы класса работают для одной, четкой цели.
- Упрощает тестирование, понимание и поддержку: Изменения в одной бизнес-логике затрагивают только один класс.
Пример нарушения и исправления:
// НАРУШЕНИЕ: Класс отвечает и за данные пользователя, и за логику уведомлений.
class User {
private String email;
void saveToDatabase() { /* ... */ }
void sendEmail(String content) { /* ... */ } // Другая ответственность!
}
// СОБЛЮДЕНИЕ SRP: Ответственности разделены.
class User { private String email; /* только данные */ }
class UserRepository { // Ответственность: работа с хранилищем
void save(User user) { /* ... */ }
}
class NotificationService { // Ответственность: отправка уведомлений
void sendEmail(User user, String content) { /* ... */ }
}
Соблюдение SRP естественным образом подводит к соблюдению других принципов SOLID (например, Open/Closed).