敏捷软件开发 – NULL OBJECT模式
Posted 顾强
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了敏捷软件开发 – NULL OBJECT模式相关的知识,希望对你有一定的参考价值。
考虑以下代码
Employee e = Db.GetEmployee("Bob");
if(e != null && e.IsTimeToPay(today))
{
e.Pay();
}
大多数人曾经由于忘记对null进行检查而受挫。该管用手法虽然常见,但却是丑陋且易出错的。
通过让Db.GetEmployee抛出一个异常而不是返回null,可以减少出错的可能性。不过,try/catch块对比null的检查更加丑陋。
可以使用NULL OBJECT模式来解决这些问题。通常,该模式会消除对null进行检查的需要,并且有助于简化代码。
Employee变成了一个且有两个实现的接口。EmployeeImplementation是正常的实现。它包含Employee对象被期望拥有的所有方法和变量。当Db.GetEmployee在数据库中找到一个雇员时,就返回一个EmployeeImplementation实例。仅当Db.GetEmployee在数据库中没有找到雇员时才返回NullEmployee的实例。
结论
那些长期使用基于C语言的人已经习惯与函数对于某种失败返回null或者0。我们认为对这样的函数的返回值是需要测试的。NULL OBJECT模式改变了这一点。使用该模式,我们可以确保函数总是返回有效的对象,及时在它们失败时也是如此。这些代表失败的对象“什么也不做”。
摘录自:[美]RobertC.Martin、MicahMartin著,邓辉、孙鸣译 敏捷软件开发原则、模式与实践(C#版修订版) [M]、人民邮电出版社,2013、254-256、
以上是关于敏捷软件开发 – NULL OBJECT模式的主要内容,如果未能解决你的问题,请参考以下文章