设为首页 加入收藏

TOP

介绍一下Nulll Object模式
2014-11-24 01:37:54 来源: 作者: 【 】 浏览:6
Tags:介绍 Nulll Object 模式

简单来说,null object模式就是为对象提供一个指定的类型,来代替对象为空的情况。说白了就是解决对象为空的情况,提供对象“什么也不做”的行为,这种方式看似无聊,但却是很聪明的解决之道。举例来说,一个User类型对象user需要在系统中进行操作,那么典型的操作方式是:


if (user != null){


manager.SendMessage(user);


}


这种类似的操作,会遍布于你的系统代码,无数的if判断让优雅远离了你的代码,如果大意忘记null判断,那么只有无情的异常伺候了。于是,Null object模式就应运而生了,对User类实现相同功能的NullUser类型,就可以有效的避免繁琐的if和不必要的失误:



二者的差别体现在哪儿呢?


其实主要的思路就是将null value转换为null object,把对user == null这样的判断,转换为user.IsNull虽然只有一字之差,但是本质上是完全两回事儿。通过null object模式,可以确保返回有效的对象,而不是没有任何意义的null值。同时,“在执行方法时返回null object而不是null值,可以避免NullReferenceExecption异常的发生。”。



null object模式的小结


有效解决对象为空的情况,为值为null提供可靠保证。


保证能够返回有效的默认值,例如在一个IList userList中,能够保证任何情况下都有有效值返回,可以保证对userList操作的有效性。


提供统一判定的IsNull属性。可以通过实现INullable接口,也可以通过Extension Method实现IsNull判定方法。


null object要保持原object的所有成员的不变性,所以我们常常将其实现为Sigleton模式。


Scott Doman说“在执行方法时返回null object而不是null值,可以避免NullReferenceExecption异常的发生”,这完全是对的。



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇object obj和object obj = null有.. 下一篇问lock那里的object实例可以直接..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: