单一职责原则(Single Responsibility Principle,简称SRP)是面向对象设计中的一个原则,它规定一个类应该只有一个引起变化的原因,也就是说一个类只负责一项职责。这个原则的目的是提高代码的可维护性、可读性和可扩展性。
一个类负责的职责越多,它的变化的原因就越多,这样就增加了类的复杂性,降低了代码的可维护性。因此,单一职责原则的核心思想是将一个类分解成多个类,每个类负责一项职责,使得每个类的变化原因都相对独立。
下面分别给出单一职责原则的反例和正例,并使用Java代码来说明:
反例:
public class Employee {
private String name;
private String employeeId;
// 管理功能
public void manage() {
// 实现管理逻辑
}
// 计算工资功能
public void calculateSalary() {
// 实现计算工资逻辑
}
}
在上面的例子中,Employee 类不遵循单一职责原则,它既包含了管理功能又包含了计算工资的功能。如果需求变化,需要修改管理逻辑或工资计算逻辑,就会导致这个类的变化原因过多。
正例:
public class Employee {
private String name;
private String employeeId;
}
public class EmployeeManager {
// 管理功能
public void manage(Employee employee) {
// 实现管理逻辑
}
}
public class SalaryCalculator {
// 计算工资功能
public void calculateSalary(Employee employee) {
// 实现计算工资逻辑
}
}
在正例中,Employee 类只负责表示雇员的基本信息,而管理功能和计算工资功能分别由EmployeeManager 和 SalaryCalculator 类负责。这样,当需求变化时,只需要修改相应的类,不会影响其他功能,提高了代码的可维护性和灵活性。