《java编程思想 泛型》——空对象

null进行操作会报空指针异常,null没有任何的行为。

空对象的概念

空对象有所代表对象的所有方法,如果调用空对象上的方法会返回表示无效的值。

空对象的用途

表示问题领域实体的对象

空对象的不足

有时候还是必须检查对象是否为空对象

《java编程思想 泛型》——空对象_第1张图片

空对象例子——创建空对象

《java编程思想 泛型》——空对象_第2张图片

空对象一般是单例,
使用单例可以直接使用equals(Person.NULL)==Person.NULL

空对象例子——使用空对象

如果职位还没有招到人则person为空对象:

《java编程思想 泛型》——空对象_第3张图片

通过检查职位的person属性是否为空对象来判断职位是否空缺:

《java编程思想 泛型》——空对象_第4张图片

请仔细观察,代码有些地方还是需要检查对象是否为空对象,不过有些地方就不需要,比如toString

自动创建空对象的例子——要求

如果使用的是接口则可以通过动态代理创建空对象。

自动创建空对象的例子——准备

《java编程思想 泛型》——空对象_第5张图片
《java编程思想 泛型》——空对象_第6张图片
《java编程思想 泛型》——空对象_第7张图片

自动创建空对象的例子——动态代理

《java编程思想 泛型》——空对象_第8张图片

模拟对象和桩

模拟对象和桩是空对象的变种。

模拟对象和桩的区别

区别在于程度。Mock Objects是轻量级和自测的,每个测试场景都会创建对应的Mock Object。
桩是重量型的和在测试中可以重复使用的。

你可能感兴趣的:(《java编程思想 泛型》——空对象)