面向对象设计原则 ---- 单一职责原则(SRP)

用户头像
张荣召
关注
发布于: 2020 年 09 月 27 日

SPR--Single Responsibility Principle

  • 内聚性原则(Cohesion)----一个模块的组成元素之间的功能相关性

  • 将内聚性与引起一个模块改变的作用力相关联,就形成描述------一个类,只能有一个引起它变化的原因。



什么是职责?

       一个职责是一个变化的原因。



案例分析:

解析:1.Comutational Geometry Application 的面积计算功能,强依赖Rectangle的area方法计算面积。

          2.Graphical Application 图形应用程序强依赖Rectangle的图形绘制功能。

          3.Rectangle承担两份职责:面积计算和图形绘制。

职责分析:

          1.Computational Geometry Application 程序只需要面积计算功能

            ===>只需依赖Rectangle的area面积计算即可

             ===>不得不依赖Rectangle的draw图形绘制功能

            ===>被迫依赖GUI库

             ===>应用程序大小增加; 

          2.Graphical Application 图形绘制功能

            ====>只需要依赖Rectangle的图形绘制draw功能

             ====>不得不依赖Rectangle的area面积计算功能      

         3.Rectangle担负两个职责:draw图形绘制,area面积计算。

 后果分析:

            脆弱性---绘图和计算耦合,修改其中一个,另外一个可能受损。

            不可移植性---几何计算应用只需要使用“计算面积”的功能,却不得不包含GUI的依赖

改进建议: 遵循单一职责原则,进行职责分离

改进方案: ==>将计算职责和绘制职责,分离。             

               改进评估: 1.面积计算职责分离后,面积计算方法如果需要更高的精度,可以调整面积计算方法,而不会影响绘制==>面积计算可单独扩展,不影响绘制。

                                 2.绘制职责分离后,绘制方法改变,只需要调整draw绘制职责,而不会影响面积计算==>绘制可单独扩展,不影响面积计算。



区分类的方法:分清职责。

评估:职责是否清晰?

改进方法?

           

           

             

                       



用户头像

张荣召

关注

还未添加个人签名 2018.05.02 加入

还未添加个人简介

评论

发布
暂无评论
面向对象设计原则----单一职责原则(SRP)