【面向对象设计原则】之 单一职责原则(SRP)

前端之家收集整理的这篇文章主要介绍了【面向对象设计原则】之 单一职责原则(SRP)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

  刚重构完,深感clean code 之美,令吾陶醉,总结下吧。O(∩_∩)O
面向对象设计原则,有时这些原则之间相互依存(如OCP 与 DIP),有时又有点矛盾(如OCP 与 ISP)
虽只浅浅学习了SRP OCP LSP DIP ISP ,但还是被这思想深深震撼。

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

为什么要SRP?

  情景:如果有多个动机耦合在一起,则一个动机可能会削弱或者抑制这个类完成其他职责的能力。

    - 情景一:表面上可以耦合在一起,但当某一个功能不断复杂化。
    - 情景二:两功能互不相关。

实际场景 :

系统由许多不同的组件组成,每一个组件个负责一块

诸如日志、事务管理和安全这样的系统服务经常融入到自身具有核心业务逻辑的组件中去。

举个栗子:《骑士和诗人》(骑士要出发时候,诗人要吟诗;骑士回来时候,诗人也要吟诗) ——————————————————————————————来自《Spring实战》

诗人应该做他分内的事,根本不需要骑士命令他来这么做。

什么是SRP?

单一职责原则:就一个类而言,应该仅有一个引起它变化的原因

  职责是什么?

  • 职责:是引起变化的原因
  • 如果有多于一个动机去改变一个类,这个类就具有多于一个职责

用SRP有什么好处?

  1. clean code
  2. 节约时间(链接时间,编译时间),节约空间(内存)。

学习SRP思想!

  1. 嗅出bad smell(例如一处函数修改,而另个函数则也要随之修改
  2. 如果应用程序的变化方式总是导致这两个职责同时变化,则这两个职责应该在一起。
  3. 当一个需求来时,应该发现变化,封装变化。

猜你在找的设计模式相关文章