一、Spec
函数规约,包括函数前面的解释以及函数的签名。如下图:
二、Representation Independence(表示独立性):
要求用户不能直接访问类的属性,对其进行修改。如果存在这样的可能,那么就称为表示暴露,存在表示暴露的设计算不上是ADT。
三、Invariants(不变量)
保持类的不变量,满足最最基本的要求。
目前见过的情况有两类:
- immutability
- Rep Invariant
四、Rep Invariant and Abstraction Function
要想理解AF和RI,就离不开表示空间R和抽象空间A,表示空间是原始数据所在的空间,与用户看到的空间相对,原始数据经过程序员程序的处理(映射)后用户才可以看到,而AF(Abstraction Function)就是这个映射的抽象处理函数。RI则是在符合不变性的前提下,R空间的一个子集。只有RI中的元素才是合法的表示值,才在抽象空间A中有映射的值。