刚重构完,深感clean code 之美,令吾陶醉,总结下吧。O(∩_∩)O
面向对象设计原则,有时这些原则之间相互依存(如OCP 与 DIP),有时又有点矛盾(如OCP 与 ISP)
虽只浅浅学习了SRP OCP LSP DIP ISP ,但还是被这思想深深震撼。
就一个类而言,应该仅有一个引起它变化的原因
为什么要SRP?
情景:如果有多个动机耦合在一起,则一个动机可能会削弱或者抑制这个类完成其他职责的能力。
- 情景一:表面上可以耦合在一起,但当某一个功能不断复杂化。
- 情景二:两功能互不相关。
实际场景 :
系统由许多不同的组件组成,每一个组件个负责一块
诸如日志、事务管理和安全这样的系统服务经常融入到自身具有核心业务逻辑的组件中去。
举个栗子:《骑士和诗人》(骑士要出发时候,诗人要吟诗;骑士回来时候,诗人也要吟诗) ——————————————————————————————来自《Spring实战》
诗人应该做他分内的事,根本不需要骑士命令他来这么做。
什么是SRP?
单一职责原则:就一个类而言,应该仅有一个引起它变化的原因
职责是什么?
- 职责:是引起变化的原因
- 如果有多于一个动机去改变一个类,这个类就具有多于一个职责
用SRP有什么好处?
- clean code
- 节约时间(链接时间,编译时间),节约空间(内存)。