美文网首页
单一职责原则

单一职责原则

作者: 指尖上的榴莲 | 来源:发表于2018-04-16 16:49 被阅读16次

    一.定义

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

    二.问题由来

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

    三.实例说明

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


    图1

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


    图2

    四.优点

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

    五.难点

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

    相关文章

      网友评论

          本文标题:单一职责原则

          本文链接:https://www.haomeiwen.com/subject/xueekftx.html