private IEsfLogger esfLogger;
public IEsfLogger EsfLogger
{
{
this.esfLogger = value;
}
}
现在假设我们在消息分派器内部多个地方使用日志记录器来进行日志记录我们总要写这样语句:
(this.esfLogger != null)
{
this.esfLogger.Log; //记录日志
}
也就是说在使用的前我们都要判断 下日志记录器引用是否为空如果不为空才可以其Log思路方法如果日志记录器进行日志记录地方很多那么每个地方都会充斥着这种判断其引用是否 为空代码有没有办法来避免这所有判断语句了有!那就是使用Null Object设计模式
ESFramework为每种必要组件都提供了对应Null Object类型这些类型名字以“Empty”作为前缀比如IEsfLogger对应Null Object类型就是EmptyEsfLoggerEmptyEsfLogger实现Log思路方法什么也不用做:
public void Log( errorType , msg, location, ErrorLevel level)
{
//Do Nothing !
}
有了EmptyEsfLogger我们就可以象这样来设计消息分派器日志记录器属性:
private IEsfLogger esfLogger = EmptyEsfLogger;
public IEsfLogger EsfLogger
{
{
(value != null)
{
this.esfLogger = value ?? EmptyEsfLogger;
}
}
}
="xspace-totlerecord">2="xspace-totlepages">1/2="xspace-current">12>
最新评论