在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,
而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。
Class Diagram
 
Implementation
抽象对象
| 12
 3
 4
 
 | public abstract class AbstractObject {public abstract void request();
 public abstract boolean isNil();
 }
 
 | 
对象
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 
 | public class RealObject extends AbstractObject {@Override
 public void request() {
 System.out.println("do something ");
 }
 
 @Override
 public boolean isNil() {
 return false;
 }
 }
 
 public class NullObject extends AbstractObject {
 @Override
 public void request() {
 
 }
 
 @Override
 public boolean isNil() {
 return true;
 }
 }
 
 | 
对象工厂
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 
 | public class ObjectFactory {
 public static AbstractObject getObject(String type){
 if(type != null && !"".equals(type)){
 return new RealObject();
 }else{
 return new NullObject();
 }
 }
 }
 
 | 
测试
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 
 | public class NullObjectTest {@Test
 public void test() throws Exception {
 
 AbstractObject real = ObjectFactory.getObject("real");
 if (!real.isNil()) {
 real.request();
 }
 
 AbstractObject nul = ObjectFactory.getObject("");
 if (!nul.isNil()) {
 nul.request();
 }
 }
 }
 
 | 
Reflence