包的设计原则

定义与作用

  • 包是一组类的容器。通过把类组织成包,我们可以在更高层次的抽象上理解设计。
  • 我们也可以通过包来管理软件的开发和发布。
  • 类会和其他包的类存在依赖,跨越包的边界,从而使包之间产生了依赖关系。

设计原则

重用发布等价原则(REP)

  • 重用的粒度就是发布的粒度。
  • 重用类库时,我们要求作者维护代码,同时在接口和功能改变时通知我们(同时我们有拒绝改变的权利)。
  • 重用性的包应该只包含以重用性为目的而设计的类。相反,非重用性的包只包含以非重用性为目的而设计的类。

共同重用原则(CRP)

  • 趋向于共同重用的类应该属于同一个包。
  • 如果依赖于一个包,那么应该依赖于该包中的所有类.否则将要进行不必要的重新验证和发布(当不依赖的部分变化时)。
  • 相互之间没有紧密联系的类不应该在同一包内。

共同封闭原则(CCP)

  • 包中的所有类对于同一类性质的变化应该是共同封闭的。即一个变化若对一个包产生影响,则将对包中的所有类产生影响,而对于其他的包不会造成任何影响。
  • 一个包不应该包含多个引起变化的原因(SRP的包规定)。
  • 通常,可维护性是重于可重用性的。应该将可能由于同样的原因而更改的类共同聚集在一个包内。

以上的三个原则,主要关注包的内聚性原则的。该原则主要作用是指导我们如何把不同的类划分到同一个包。通常我们选择包中的类时,要考虑可重用性与可开发性之间的反作用力。

无环依赖原则(ADP)

  • 包的依赖关系图中不允许出现环。
  • 包设计时应该尽量避免出现依赖环。
    • 使用DIP。
    • 增加新包。
      在这里插入图片描述

稳定依赖原则(SDP)

  • 朝着稳定的方向进行依赖。
  • 为了可维护性,易变性是必须的。对某些变化敏感的包,可以设计成可变的。
  • 对于一个期待可变的包,不应该让一个难以更改的包依赖于它。否则,它也会变成不可变的。
  • 软件的反常特性:对于一个易变的包,创建一个对它的依赖就可以使其变得难以更改。

稳定抽象原则(SAP)

  • 包的抽象程度应该和其稳定程度一致。
    • 一个稳定的包应该是抽象的,这样稳定性不会使其无法扩展。
    • 一个不稳定的包应该是具体的,不稳定性使其内部的具体代码易于更改。
  • SAP+SDP构成了包的DIP原则。依赖应该朝着稳定的方向进行+稳定性意味着抽象性=>依赖应该朝着抽象的方向进行。
  • 包的灰度:允许包是部份抽象,部份稳定。
  • 包抽象性度量:抽象类的数目/类的总和。A=a/c

以上上三个原则,主要关注包的耦合性原则的。该原则主要帮助我们确定包与包之间的相互关系。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值