你的位置:首页 > 软件开发 > ASP.net > 敏捷软件开发 – SRP 单一职责原则

敏捷软件开发 – SRP 单一职责原则

发布时间:2016-08-29 00:00:04
SRP:单一职责原则 一个类应该只有一个发生变化的原因。 为何把两个职责分离到单独的类中很重要呢?因为每一个职责都有变化的一个轴线。当需求变化时,该变化会反映为类的职责的变化。如果一个类承担了多于一个的职责,那么引起它变化的原因就会 ...

SRP:单一职责原则  一个类应该只有一个发生变化的原因。

 

       为何把两个职责分离到单独的类中很重要呢?因为每一个职责都有变化的一个轴线。当需求变化时,该变化会反映为类的职责的变化。如果一个类承担了多于一个的职责,那么引起它变化的原因就会有多个。

       如果一个类承担的职责过多,就等于把这些职责耦合在了一起。一个职责发生变化可能会削弱或抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。

       有两个不同的应用程序使用Rectangle类。一个应用程序是有关计算几何学方面的,利用Rectangle类计算几何形状,但不会再屏幕上绘制矩形。另外一个应用程序实质上是有关图形绘制方面的,它可能也会进行一些计算几何方面的工作,但是它肯定会在屏幕上绘制矩形。

敏捷软件开发 – SRP 单一职责原则

       这个设计违反了单一职责原则(SRP)。Rectangle类具有两个职责。第一个职责提供了一个矩形几何形状的数学模型;第二个职责是把矩形在一个图形用户界面上绘制出来。

       对于SRP的违反导致了一些严重的问题。首先,我们必须在计算几何应用程序中包含进GUI代码。在.Net中,就必须要把GUI组建和计算几何应用一起构建、部署。

       其次,如果GraphicalApplication的改变由于一些原因导致了Rectangle的改变,那么这个改变会迫使我们重新构建、测试以及部署ComputationalGeometryApplication。如果忘记这样做,ComputationalGeometryApplication可能会以不可预测的方式失败。

       一个较好的设计是把这两个职责分离到两个完全不同的类中。这个设计把Rectangle类中进行计算的部分移动到了GeometricRectangle类中。现在矩形绘制方式的改变不会对ComputationalGeometryApplication类造成影响。

敏捷软件开发 – SRP 单一职责原则 

 

定义职责

       在SRP中,我们把职责定义为变化的原因。如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。有时,我们很难注意到这一点。我们习惯于以组的形式去考虑职责。

public interface Modem{    public void Dial(get='_blank'>string pno);    public void Hangup();    public void Send(char c);    public char Recv();}

原标题:敏捷软件开发 – SRP 单一职责原则

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录