#抽象数据类型(ADT)
#ADT操作的四种基本类型
1)Creators 构造器(从无到有)
2)Producers 生产器(从有到新)
3)Observers 观察器
4)Mutators 变值器
构造器:可能实现为构造函数或静态函数,实现为静态方法的构造器通常称为工厂方法
#Designing an Abstract Type
#Rule of thumb 1
设计简洁,一致的操作
#Rule of thumb 2
要足以支持client对数据所做的所有操作需要,且用操作满足client需要的难度低
#表示独立性
表示独立性:client使用ADT时无需考虑其内部如何实现,ADT内部的变化不应影响外部spec和客户端
#表示泄露
最好的方法就是使用immutable的类型,彻底避免表示泄露
#R:表示值构成的空间:实际者看到和使用的值
#A:抽象值构成的空间,client看到和使用的值
Mapping between R and A
满射,未必单射,未必双射
#AF:抽象函数,R和A之间映射关系的函数,即如何将R中的每一个值解释为A中的每一个值
#表示不变性RI,某个具体的表示是否是合法的(一个条件,描述了什么是合法的表示值)
#checkrep在所有可能改变rep的方法内都要检查
#有益的可变性:对于immutable的ADT来说,他在A空间的abstract value应是不变的,但其内部表示的R空间中的取值是可以变化的