单一职责原则

一.定义

单一职责原则(Single Responsibility Principle, SRP),有且仅有一个原因引起类的变更。

二.问题由来

类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。

三.实例说明

下面的类图,在IUserInfo接口中同时实现了维护用户的属性和行为的功能,那么更新一个用户的属性(userid,userName,password),或者执行用户的行为(更新密码,删除用户)都会导致类的改变,导致在用户的属性或行为变化时,UserInfo类都会改变。这就违反了我们的单一职责原则。


图1

接下来把IUserInfo接口重新拆分成两个接口,IUserBO接口负责处理用户的属性,IUserBiz接口负责处理用户的行为。这样用户的属性改变,只会导致IUserBO接口改变,用户的行为改变,只会导致IUserBiz接口改变,这样也就更符合单一职责原则。


图2

四.优点

  • 降低类的复杂性,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多;
  • 提高类的可读性,提高系统的可维护性;
  • 降低变更引起的风险,变更是必然的,如果单一职责原则遵守的好,当修改一个接口的功能时,可以显著降低对其他接口功能的影响。

五.难点

单一职责原则,最难划分的就是职责,因为“职责”并没有一个量化的标准,需要从实际的项目去考虑。
在实际应用中,类的设计尽量做到只有一个原因引起变化,接口一定要做到单一职责原则,方法一定要做到单一职责原则,即一个方法只实现一个功能。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容