单一职责原则(SRP)
概念:一个模块有且只能由于一种原因被改变,一个模块有且只能对一个角色负责。
模块:一组内聚的函数和数据结构
症状:意外的重复
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210626111227458.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zOTQ0MzQ4Mw==,size_16,color_FFFFFF,t_70)
对某个角色所用到的公用代码进行修改时,会影响其他角色调用该代码的结果。SRP原则讲:分割不同角色依赖的代码。
解决方法
这问题有很多不同的解决方法,每种都把这些函数移到不同的类中。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210626114657569.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zOTQ0MzQ4Mw==,size_16,color_FFFFFF,t_70)
这种方案的缺点是开发者现在有三个需要实例化和跟踪,可以通过门面模式
。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210626115620862.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zOTQ0MzQ4Mw==,size_16,color_FFFFFF,t_70)
一些开发者倾向于把重要的业务规则写得离数据更近。把重要的方法保留到之前的Employee类里,然后用这个类作为门面访问更少的函数。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210626120124179.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zOTQ0MzQ4Mw==,size_16,color_FFFFFF,t_70)