定义:
单一职责原则指一个类应该仅有一个引起它变化的原因。这个原则强调一个类应该只负责一个功能领域中的相应职责,或者可以理解为一个类应该只有一个改变的原因。
解决的问题:
- 降低类的复杂度,一个类只负责一项任务会更加清晰。
- 提高类的可读性和可维护性。
- 降低修改程序所引入的风险。
使用场景:
- 当一个类承担过多的职责,或者这些职责在概念上不紧密相关时。
- 设计类的时候,类的职责应该尽可能单一。
示例代码:
// 不遵守单一职责原则的例子
class User {public void login(String username, String password) {// 登录逻辑}public void register(String username, String password) {// 注册逻辑}public void logError(String error) {// 日志记录}
}// 遵守单一职责原则的重构
class UserAuthentication {public void login(String username, String password) {// 登录逻辑}public void register(String username, String password) {// 注册逻辑}
}class UserLog {public void logError(String error) {// 日志记录}
}
在这个示例中,初始的User
类同时负责用户认证和日志记录两种不同的功能。根据单一职责原则,我们将这个类分解为UserAuthentication
和UserLog
两个类,每个类各自处理一种单一职责。