Null object模式

Null Object模式的目的包括:

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

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

原本需要判断null时:
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;
}


摘自[url]http://www.cnblogs.com/west-link/archive/2011/07/08/2100691.html[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值