我想知道在某些情况下,空对象模式是否真的会使调试更加困难。例如,如果方法返回一个"空"对象而不是null然后它不会抛出错误。这在可靠,干净的代码方面是好的,但是这并不意味着现在使用的空对象基本上什么都不会导致意外的错误。而不是有一个null异常指向程序员的问题,现在没有什么可以帮助找到它。
答案 0 :(得分:2)
是的可以因为如果你的null对象必须返回一个值(如你的例子中),你只是推迟null问题,仍然需要检查空值。
我发现null对象非常有用,满足两个条件。
简单示例是回调。
Logger.log
通常,您必须在使用回调
之前进行空检查class Callback {
void onDoSomething(SomeArg someArg);
}
使用空对象模式,您可以将回调的默认值设置为空对象,并避免在其余代码中进行空检查。更少的样板代码可以更容易地查看重要部件。