在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,
而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。
Class Diagram
Implementation
抽象对象
1 2 3 4
| public abstract class AbstractObject { public abstract void request(); public abstract boolean isNil(); }
|
对象
1 2 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; } }
|
对象工厂
1 2 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(); } } }
|
测试
1 2 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