Rajat's Notes

Personal knowledge based for Tech, Interviews and many more.

This project is maintained by im-Rajat

Single Responsibility Principle

Bad Implementation :

public class Employee {
    private String fullName;
    private String dateOfJoining;
    private String annualSalaryPackage;

    // standard getters and setters methods

    // business logic
    public long calculateEmployeeSalary(Employee emp) {...}
    public long calculateEmployeeLeaves(Employee emp) {...}
    public long calculateTaxOnSalary(Employee emp) {...}

    // data persistence logic
    public Employee saveEmployee(Employee emp) {...}
    public Employee updateEmployee(Employee emp) ...}
}

Good Implementation :

public class Employee {
    private String fullName;
    private String dateOfJoining;
    private String annualSalaryPackage;

    // standard getters and setters methods
}

public class EmployeeService {
    // ...

    public long calculateEmployeeSalary(Employee emp) {...}
    public long calculateEmployeeLeaves(Employee emp) {...}
    public long calculateTaxOnSalary(Employee emp) {...}
}

public class EmployeeDAO {
    // ...

    public Employee saveEmployee(Employee emp) {...}
    public Employee updateEmployee(Employee emp) {...}
}