面向对象设计原则 ---- 单一职责原则(SRP)
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绘制职责,而不会影响面积计算==>绘制可单独扩展,不影响面积计算。
区分类的方法:分清职责。
评估:职责是否清晰?
改进方法?
评论