空对象模式

 
空对象模式
     在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的地方 使用一个空对象取代 NULL 对象实例的检查,空对象不是检查空值,而是反应一个不做任何动作的关系。这样的空对象也可以在数据不可用的时候提供默认的行为。
 
 
不要为了屏蔽null而使用空对象
应保持用null,远比用非null的值来替代“无值”要好。空对象模式其实本质上和“用0替代null”是一个道理。
当你仅是为了避免null的出现,那请不要使用空对象模式(Null Object Design)。
    想象一下旅馆订票的例子。一个用户操作由于某种原因,hotel数据变为了null,但是应用运行“正常”——因为我们讨厌null,所以我们把它屏蔽了。然后用户继续对着一个“NullHotel”在进行操作,而且还完成了整个操作。
    当用户真正到旅馆后发现,他并没有预订任何房间。旅馆现在满了,而且晚上11:00了,没周围没别的旅馆...不敢想象用户会怎么看待这个订票的程序...由于整个项目屏蔽了null的错误,没有人发现了这个问题的存在,所以..原来他一直是在和一个NullHotel玩呢...
来源:
译文:我们为什么爱你--null(2.方案“零”): http://www.jianshu.com/p/ba4450785d24#
译文:我们为什么爱你--null(3.空对象模式): http://www.jianshu.com/p/77305ee74954