对null
进行操作会报空指针异常,null
没有任何的行为。
空对象的概念
空对象有所代表对象的所有方法,如果调用空对象上的方法会返回表示无效的值。
空对象的用途
表示问题领域实体的对象
空对象的不足
有时候还是必须检查对象是否为空对象
空对象例子——创建空对象
空对象一般是单例,
使用单例可以直接使用equals(Person.NULL)
或==Person.NULL
。
空对象例子——使用空对象
如果职位还没有招到人则person
为空对象:
通过检查职位的person
属性是否为空对象来判断职位是否空缺:
请仔细观察,代码有些地方还是需要检查对象是否为空对象,不过有些地方就不需要,比如toString
。
自动创建空对象的例子——要求
如果使用的是接口则可以通过动态代理创建空对象。
、
自动创建空对象的例子——准备
自动创建空对象的例子——动态代理
模拟对象和桩
模拟对象和桩是空对象的变种。
模拟对象和桩的区别
区别在于程度。Mock Objects是轻量级和自测的,每个测试场景都会创建对应的Mock Object。
桩是重量型的和在测试中可以重复使用的。