1.Spec给“供需双方”都确定了责任,在调用的时候双方都要遵守。
2.规约可以隔离”变化“,无需通知客户端,可以提高代码效率
3.规约扮演着防火墙的角色,用户不需要了解具体实现,只需知道是干什么的。
一、行为的等价性(是否可以相互替换?)
首先,我们需要站在客户端的视角看行为等价性。可以根据规约来判断是否行为等价。如果两个函数都符合同一个规约,那么他们等价。
二、规约的前置和后置条件
前置条件:对客户端的约束,在使用方法时候必须满足的条件。
后置条件:对开发者的约束,方法结束时必须满足的条件。
契约:如果前置条件满足了,后置条件必须满足。相反,如果前置条件不满足,则方法可以做任何事情。

例如上述蓝色框里的五条,方法所做的都是正确的,因为前置条件违反了,我方法怎么做都可以。
三、如何比较两个规约?以判断是否可以用一个规约来替换另一个
Spec变强:前置条件更弱、后置条件更强。那么我们就可以用其来代替另一个。
Spec规定了供需双方的责任,作为防火墙隔离变化并确保代码效率。行为等价性基于规约判断,前置条件和后置条件定义了方法使用的约束。当一个Spec的前置条件更弱、后置条件更强时,它可以替换另一个Spec。
454

被折叠的 条评论
为什么被折叠?



