A class should have only one reason to change.
Example: Consider a class that handles both user data and its formatting. This violates SRP.
// Violation of SRP public class User { private String name; private String email; public User(String name, String email) { this.name = name; this.email = email; } // Responsibility 1: Managing user data public String getName() { return name; } public String getEmail() { return email; } // Responsibility 2: Formatting user data public String getUserDetails() { return "Name: " + name + ", Email: " + email; } } // Following SRP public class User { private String name; private String email; public User(String name, String email) { this.name = name; this.email = email; } public String getName() { return name; } public String getEmail() { return email; } } public class UserFormatter { public String formatUserDetails(User user) { return "Name: " + user.getName() + ", Email: " + user.getEmail(); } }
Here, the User
class handles only user data, while UserFormatter
handles formatting. This separation ensures each class has only one reason to change.
Leave a Reply