Null object模式_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Null object模式

Null object模式

 2013/10/26 12:44:49  marcofly  程序员俱乐部  我要评论(0)
  • 摘要:NullObject模式的目的包括:1.当对象提供者无法提供指定类型的对象时,返回一个什么都不做的对象,这对调用者是透明的,并且调用者不用判断获得的对象是否为null了,当然,对象提供者必须告知调用者(通过约定等).2.有时候需要传递一个什么都不做的某个类型的对象给合作方.例如某个函数需要实现特定接口的对象(通过参数传入)进行某些操作,该函数的调用者在某些情况下希望不进行这些操作,那么他就可以传进来一个实现了该接口但函数体全为空的对象,这个对象就是NullObject.原本需要判断null时
  • 标签:模式
Null Object模式的目的包括:

1. 当对象提供者无法提供指定类型的对象时, 返回一个什么都不做的对象, 这对调用者是透明的,并且调用者不用判断获得的对象是否为null了,当然,对象提供者必须告知调用者(通过约定等).

2. 有时候需要传递一个什么都不做的某个类型的对象给合作方. 例如某个函数需要实现特定接口的对象(通过参数传入)进行某些操作, 该函数的调用者在某些情况下希望不进行这些操作,那么他就可以传进来一个实现了该接口但函数体全为空的对象,这个对象就是Null Object.

原本需要判断null时:
class="java">EventRecorder recorder = EventRecorderFactory.getRecorderByType(0);
if( recorder ==null ){
Log.error("Recorder对象为空");
lastErrorCode =0;
}
else{
recorder.record("记录点啥...");
}

用了Null Object后:
publicinterface EventRecorder{
publicvoid record(String event);
}
publicclass RecordEventToDatabase implements EventRecorder{
publicvoid record(String event);
// 记录内容到数据库中
}
}

publicclass RecordEventToFile implements EventRecorder{
publicvoid record(String event);
// 记录内容到文件中
}
}
publicclass NullEventRecorder implements EventRecorder{
publicvoid record(String event);
}
publicstatic EventRecorder getRecorderByType(int type){
EventRecorder recorder =null;
if(type ==0)
recorder =new RecordEventToDatabase();
elseif(type ==1)
recorder =new RecordEventToFile();
else
recorder =new NullEventRecorder(); // 这就是Null Object
return recorder;
}


摘自http://www.cnblogs.com/west-link/archive/2011/07/08/2100691.html
发表评论
用户名: 匿名