一、定义
单一职责(Single Responsibility Principle, SRP):应该有且仅有一个原因引起类的变更
。
英文原话解释:There should never be more than one reason for a class to change.
PS:定义中的类包括接口、类和方法。
二、举例
下面举出一个错误样例:
应该把用户信息抽取成一个BO(Business Object, 业务对象),把行为抽取成一个Biz(Business Logic, 业务逻辑)。按照这个修正思路,结果如下图:
职责划分后的代码如下所示:
...
IUserInfo userInfo = new UserInfo();
//赋值
IUserBO userBO = (IUserBo)userInfo;
userBo.setPassword("abc");
//执行动作
IUserBiz userBiz = (IUserBiz)userInfo;
userBiz.deleteUser();
...
但在实际应用中,倾向使用如下方式:
三、单一职责的优点
- 类的复杂性降低
- 可读性提高
- 可维护性提高
- 变更引起的风险降低
四、最佳实践
接口
一定要做到单一职责,类
的设计尽量做到只有一个原因引起变化。