写点什么

SOLID 原则之 单一职责原则

  • 2021 年 11 月 18 日
  • 本文字数:1102 字

    阅读完需:约 4 分钟

SOLID 原则并非单纯的 1 个原则,而是由 5 个设计原则组成的,它们分别是:单一职责原则、开闭原则、里式替换原则、接口隔离原则和依赖反转原则,依次对应 SOLID 中的 S、O、L、I、D 这 5 个英文字母。(没有迪米特法则)我们今天要学习的是 SOLID 原则中的第一个原则:单一职责原则。


单一职责原则(Single Responsibility Principle)

里氏替换原则(Liskov Substitution Principle)

依赖倒置原则(Dependence Inversion Principle)

接口隔离原则(Interface Segregation Principle)

开闭原则 (Open Closed Principle)


迪米特法则 (Law Of Demeter)

设计模式六大原则总结


设计模式六大原则:面向对象语言开发过程中,会有经验心得总结沉淀,然后就成了原

则,属于指导性原则(方向,不是具体招数-更虚)


单一职责原则(Single Responsibility Principle)

定义 1

一个类只负责一个功能领域中的相应职责

定义 2

就一个类而言,应该只有一个引起它变化的原因。

通俗的说,即一个类只负责一项职责。


我的理解就是 一个类能够做到改动它的理由只能有一个 就是 单一原则


多分支的 Animal 该如何设计


单一职责的用法 就是 分拆 将 if else 过多 拆了 各是各的类 逻辑判断复杂也拆了 拆到别的类做具体逻辑 主类只做调用


类中的 if else 很多 判断

动物类都放在一个类---需要各种判断+分支---肯定不稳定,有很多个原因让他变化---违背了

单一职责---拆分成多个类(chicker cow fish)---每个类就都稳定了,都单一职责了


Client--->

利率要变,得改类,说明职责不单一---封装利率获取的逻辑到别的类

账号验证要变,得改类,说明职责不单一---封装到别的类里面—UserCheckService

一个类的多个动作,交给别的类去封装,只负责调用---满足单一职责,增强稳定

总结

单一职责原则是实现高内聚、低耦合的指导方针,它是最简单但又最难运用的原则,需

要设计人员发现类的不同职责并将其分离,而发现类的多重职责需要设计人员具有较强

的分析设计能力和相关实践经验—只有熟悉业务,才能做好设计

太虚了,还是动不了手


1 如果类型足够简单,可以在类级别去违背单一职责

2 如果方法足够简单,可以在方法级别去违背单一职责

3 如果类型复杂了,方法逻辑多了,建议遵循单一职责原则

4 一个方法,不超过 50 行(编码建议)

5 一个类,不超过 300 行(编码建议)


优缺点

优点:

1 可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单

的多;

2 提高类的可读性,提高系统的可维护性;

3 变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功

能时,可以显著降低对其他功能的影响。

缺点:

1 拆多了零碎,不好管理,不好使用,成本高

有所得必有所失,设计师做的,就应该是扬长避短,灵活应用

用户头像

8年.net 老程序猿 后端工程狮 2021.01.30 加入

06年毕业,8年开发 4年架构。现在在公司打杂 有硬核文章,还有幽默风趣的诗和远方。

评论

发布
暂无评论
SOLID原则之 单一职责原则