软件构造博客(5)

复习:

1.rep exposion:ADT中的重要指标是是否存在rep泄露。最好的办法就是 使用immutable的类型,彻底避免表示泄露。

基本的rep泄露有以下几种:

1).变量没有使用private保护,导致其他类中可以随意查看甚至更改该变量。

2).没有使用正确的obsever而返回了mutable,导致改变了值从而泄露rep。

3).和2类型相似,都是没有做好防御式拷贝,导致其他类的修改直接作用于mutable变量。

前一种比较明显,后两种有时不易察觉。用户向构造器中传递了一个可变数据类型,而构造方法直接将这个变量赋值给自己的成员属性,虽然我们没有直接将rep给用户,但用户可以引用这个变量。

immutable类可以拥有mutable的子类,只要子类还能替代父类且mutable的部分不影响本身的immutable的性质即可,并不违反LSP原则。

2.

spec的强弱的判断和比较方法
前置条件越弱,一方面,对于用户更加的友好,其不用考虑太多的情况即可放心使用。另一方面,对于程序员的要求就越高,因为这意味着他需要考虑到更多的情况,使得程序员不能随便实现了。使得规约变强。

后置条件越强,对于用户来讲得到的信息越具体,这样就需要程序员使用更加具体的实现方式,限制了实现的手段,使得程序员不能随便实现了。使得规约变强。

因为前置条件必须被满足,所以后置条件的比较是在前置假设成立的条件下进行的,在很多情况下,前置条件的限制使得后置条件从不同变为相同

规约越强,实现的手段就越少。所以我们在实现了一个规约之后,代码可以直接适用于比这个规约弱的规约,但是不再能适用于比这个强的规约了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值