面向对象包的设计原则ADP/SDP/SAP与包的设计度量工具jDepend

Robert C. Martin名著《敏捷软件开发:原则、模式与实践》一书第20章“包的设计原则”提到了几个很重要的设计原则。这篇文章主要看下涉及包的依赖性和稳定性的3个设计原则ADP/SDP/SAP。熟悉这3个设计原则之后,我们再看下度量工具jDepend的使用。

1.ADP(Acyclic Dependencies Principle)

无循环依赖原则,这个比较简单,就是包之间不允许有循环依赖。

2.SDP(Stable Dependencies Principle)

稳定依赖原则,包应该朝着稳定的方向进行依赖。比如我们有3个包A、B、C,其中A依赖于B,B依赖于C,SDP原则要求包的稳定性关系是A<=B<=C。也就是说越高层的包越不稳定,越底层的包越稳定。稳定意味一旦修改,工作量会非常的大。具有很多输入依赖关系的包是非常稳定的,因为如果修改它,那么所有依赖它的其他包都要修改。比如J2EE项目,一般会分为action层、service层、dao层、vo层,它们之间一般会存在如下的依赖关系:


我们称vo是最稳定的,action是最不稳定的。因为一旦我们修改vo,那么action、service、dao都需要修改;如果我们修改action,那么service、dao、vo都不会受影响。可以看到:包的输入依赖越多就会越稳定,也就越难以修改

现在我们看下如何通过数据指标来度量包的稳定性。我们定义3个指标:Ca、Ce、I。
Ca:输入耦合(Afferent Coupling),指处于该包的外部并依赖于该包中的类的类的数目。
Ce:输出耦合(Effernet Coupling),指处于该包的内部并依赖于该包外的类的类的数目。
I:不稳定性(Instability),其中I = Ce / (Ca + Ce),该度量的取值范围是[0, 1]。I=0 表示该包具有最大的稳定性,I=1 表示该包具有最大的不稳定性。

当一个包的I度量值为1时,意味着没
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值