Ответ
Принцип единственной ответственности (SRP) гласит: класс должен иметь одну и только одну причину для изменения, то есть отвечать за одну задачу или функциональность.
Пример нарушения SRP:
class Report {
public String generateReport(String data) {
// Логика генерации отчета
return "Report: " + data;
}
public void saveReportToFile(String report, String filename) {
// Логика сохранения в файл
System.out.println("Saving report to " + filename);
}
}
Этот класс нарушает SRP, так как совмещает две ответственности: генерацию бизнес-логики отчета и работу с файловой системой.
Пример с соблюдением SRP:
// Класс отвечает только за генерацию отчета
class ReportGenerator {
public String generate(String data) {
return "Report: " + data;
}
}
// Класс отвечает только за сохранение данных
class FileSaver {
public void save(String content, String filename) {
System.out.println("Saving to " + filename);
}
}
Преимущества:
- Код становится проще тестировать и поддерживать.
- Изменения в логике сохранения не затрагивают логику генерации отчета, и наоборот.
- Повышается переиспользуемость компонентов.