敏捷软件开发 – 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模式的主要内容,如果未能解决你的问题,请参考以下文章

空对象模式(Null Object Pattern)

如何利用力软敏捷开发框架在线体验

敏捷开发之分支管理

敏捷开发之分之管理

被遗忘的设计模式——空对象模式(Null Object Pattern)

敏捷开发模式