What is the Single Responsibility Principle?

Beginner

Answer

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) { }
}