操作的分类
举例
Integer.valueOf() - Creator
解释: Integer.valueOf() 方法接受一个 int 或 String,并返回一个 Integer 对象(抽象类型)。它创造了一个新的抽象类型实例,所以是 Creator。
BigInteger.mod() - Producer
解释: BigInteger.mod() 方法接受一个 BigInteger 对象作为参数,并返回一个新的 BigInteger(抽象类型)。它基于输入生产了新的抽象类型实例,所以是 Producer。
List.addAll() - Mutator
解释: List.addAll() 方法接受一个集合并将其所有元素添加到调用该方法的列表中。它改变了列表的内容,所以是 Mutator。
String.toUpperCase() - Producer
解释: String.toUpperCase() 方法返回一个新的 String 对象,其内容是调用字符串的大写版本。它基于输入生产了新的对象,所以是 Producer。
Set.contains() - Observer
解释: Set.contains() 方法检查集合中是否包含指定元素,并返回一个 boolean 值(其他类型)。它不改变集合,只是观察集合的状态,所以是 Observer。
Map.keySet() - Observer
解释: Map.keySet() 方法返回映射中所有键的集合。虽然它返回的是一个集合,但它只是观察映射的状态,而不改变它,所以是 Observer。
Collections.unmodifiableList() - Producer
解释: Collections.unmodifiableList() 方法接受一个 List 并返回一个新的不可修改的 List(抽象类型)。它基于输入生产了一个新的抽象类型实例,所以是 Producer。
BufferedReader.readLine() - Mutator
解释: BufferedReader.readLine() 方法从输入流中读取一行文本,并改变输入流的状态(移动到下一行)。因此,它既返回了一个其他类型(字符串),又改变了状态,所以是 Mutator。
表示独立性(RI)
表示独立性:client使用ADT时无需考虑其内部如何实
现,ADT内部表示的变化不应影响外部spec和客户端。
测试ADT
测试creators, producers, and mutators:调用observers来观察这些 operations的结果是否满足spec;
测试observers:调用creators, producers, and mutators等方法产生或 改变对象,来看结果是否正确。
▪ 风险:如果被依赖的其他方法有错误,可能导致被测试方法的测试结 果失效
![](https://img-blog.csdnimg.cn/direct/053f51388c8a4bc79536b17e1d2be65d.png)