前言
抽象类型:强调"作用于数据上的操作",程序员和client无需关心数据如何具体存储,只需设计/使用操作即可。
ADT由操作定义,与其内部实现无关。
可变数据类型:提供了可改变其内部数据值的操作;
不可变数据类型:其操作不改变内部值,而构造新的对象。(没有mutators)
ADT操作分类
- Creators 构造器:
不利用该类型对象产生一个新的对象
可能实现为构造函数或静态函数(factory method)
- Producers 生产器:
用已有该类型对象产生新对象
如string.concat()(连接两个字符串,产生一个新的字符串)
- Observers 观察器
如list.size()返回int(不同于原类型)
- Mutators 变值器(改变对象属性的方法)
通常范围void,如果返回void,则必然意味着它改变了某些对象的内部状态
也可能范围非空类型(如容器类的put、add方法)