The Single Responsibility Principle states that a class should have only one reason to change, meaning it should have only one responsibility or job. A class should focus on a single aspect of the software's functionality.
Example of violation:
class User {
private String name;
private String email;
// User data management
public void setName(String name) { this.name = name; }
// Email functionality - violates SRP
public void sendEmail(String message) {
// email sending logic
}
// Database operations - violates SRP
public void saveToDatabase() {
// database saving logic
}
}
Better approach:
class User {
private String name;
private String email;
// Only user data management
}
class EmailService {
public void sendEmail(User user, String message) { }
}
class UserRepository {
public void save(User user) { }
}