六大设计原则-单一职责原则

195 阅读2分钟

1 单一职责原则定义

单一职责原则(Single Responsibility Principle,简称SRP)

单一职责原则定义:应该有且仅有一个原因引起类的变更。

SRP: There should never be more than one reason for a class to change.

通俗来讲就是一个接口或类只负责一件事。

比如说,在RBAC(Role-Based Access Control,基于角色的访问控制)中。对用户有维护用户信息和给用户分配角色等功能。如果将维护用户信息和给用户分配角色写在一个类中,那么该类就不满足单一职责的定义。因此我们需要定义两个接口:

  • IUserBO: 负责用户属性,职责为收集与反馈用户属性。
  • IUserBiz: Biz,即Business,也就是业务的意思。该接口负责用户行为,职责是用户信息维护和变更。

2 单一职责原则的优点

我们在使用设计原则时,了解设计原则的优点,才能在具体场景中灵活应用设计原则。

单一职责原则优点:

  • 类做到职责单一,那么需求变更所引起的风险将大大降低。我们在开发过程中,不可避免的产生变更风险。但由于我们在编写接口时遵守了单一职责原则。那么每一个接口的变更只会对接口和该接口的实现类产生影响,对其他接口的影响将降到最低。
  • 类中职责得以清晰明确定义,从而使得类的复杂性降低。
  • 类的复杂性降低,则类的可读性提高。
  • 可读性提高,代码将变得更加容易维护。

3 单一职责原则的不足

单一职责原则最大的不足就是职责划分困难。在设计过程中,将职责划分得过细,会在整体增加系统类的复杂度。

4 最佳实践

单一职责原则是一个非常好的设计原则。但在实际项目开发的过程中,不能一味地遵守单一职责原则。要考虑多方面的因素,比如项目工期、项目成本、硬件情况、网络情况和人员技术水平,有时候需要考虑政府政策等因素。即综合考虑并应用单一职责原则。

建议:接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。