空对象模式值得吗?

Geo*_*tis 5 .net oop design-patterns domain-driven-design

我正在查看空对象模式,我想知道是否值得实现它或使用"if"检查我的代码intsead中的空值.当我查看实现时,似乎很难保持对象与其null实现很好地同步.通过对主对象进行更改,我们必须检查null对象是否按预期运行,并且很容易产生实现错误.不是吗?

编辑

避免检查null:http://www.invisible-city.com/sharon/2009/03/null-object-pattern-when-slacker-is.htmlhttp://journalofasoftwaredev.wordpress.com/2008/08/19 /空对象的图案按示例/

Alb*_*oPL 5

如果您的对象为 null 将成为整个代码中的常态,那么您不妨使用该模式。当对象尚未创建且需要实例化时,我会检查 null 。我实际上并没有将 null 用于其他任何事情,而且我当然不会用它来表示没有定义行为。

但是,如果您使用 null 来表示尚未定义行为或默认行为什么都没有,那么一定要使用该模式。


flq*_*flq 3

根据我的经验,我不觉得保持空对象同步并不困难。如果您确实遇到此问题,则您的对象可能有太多责任,因为它会发生很多变化。

如果我实际上可以通过让默认行为良好流动来定义这样的对象,我倾向于使用此模式。例如,用于查询操作的空对象是不影响原始查询的对象。对其他对象的空扩展是不执行任何操作的扩展。

我有时发现它是一个非常干净的模式,可以避免使用 ifs 检查在我的应用程序的特定状态下可能存在或不存在的可选行为。