单一职责原则(SRP)
来源:互联网 发布:淘宝网-淘我喜欢首页 编辑:程序博客网 时间:2024/05/01 15:20
《敏捷软件开发:原则、 模式与实践》中这样描述:就一个类而言,应该仅有一个引起它变化的原因。
在SRP中,把类职责定义为“变化的原因”(a reason for change),每一个职责都是变化的一个轴线(an axis of change ),如果有多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。当需求变化时,该变化会反应为类的职责的变化,如果一个类承担的职责过多,就等于将这些职责耦合在了一起,一个职责的变化可能换削弱或者抑制这个类完成其他职责的能力。
考虑下面类图中的设计。Rectangle类具有两个方法,一个方法把矩形绘制在屏幕上,另一个方法计算矩形的面积。
有两个不同的应用程序使用Rectangle类。一个是计算机几何学方面的,Rectangle类会在计算机几何形状计算方面为它提供帮助,它从来不会在屏幕上绘制矩形。另外一个应用程序实质上是有关图形绘制方面的,它可能也会进行一些计算几何方面的工作,但是它肯定会在屏幕上绘制矩形。
这个设计违反了单一职责原则,Rectangle类具有两个职责。第一个职责提供了一个矩形几何形状的数据模型,第二个职责是把矩形在图形用户界面上绘制出来。
这将导致一些严重问题。首先,必须在计算几何用用程序中包含GUI代码,如果这是一个C++应用程序,就必须要把GUI代码链接进来,这会浪费链接时间、编译时间以及内存占用。如果是一个Java应用程序,GUI的.class文件必须要被部署到目标平台。其次,如果GraphicalApplication的改变由于一些原因导致了了Ranctangle的改变,那么这个改变会迫使我们重新构建、测试以及部署ComputationGeometryApplication。
一个好的设计是把这两个职责分离到两个不同的类中,改进后的设计如下。Rectangle类中进行计算的部分移到GeometryRectangle类中,这时矩形绘制方式的改变不会对ComputationGeometryApplication造成影响。
- 单一职责原则(SRP)
- 单一职责原则(SRP)
- 单一职责原则(SRP)
- 单一职责原则(SRP)
- 单一职责原则(SRP)
- 单一职责原则(SRP)
- 单一职责原则(SRP)
- 单一职责原则(SRP)
- 单一职责原则--SRP
- 单一职责原则SRP
- SRP单一职责原则
- 单一职责原则--SRP
- 单一职责原则--SRP
- SRP:单一职责原则
- 单一职责原则--SRP
- SRP:单一职责原则
- 单一职责原则SRP
- 单一职责原则(SRP)
- [BZOJ 1084] SCOI 2005 最大子矩阵 · 简单DP
- Lab_10
- 控制easyui-tabs打开哪个标签页、选项卡,及easyui-datagrid单击事件
- Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
- bzoj3810[Coci2015]Stanovi 记忆化搜索
- 单一职责原则(SRP)
- 科技界远比商业界更缺乏温情,更弱肉强食
- stack in c++
- IDEA配置JDK
- ORB算法描述
- Oracle中的Round函数
- shell中的特殊变量IFS(转)
- volatile 关键字
- Linux用户管理