Roh*_*hit 6 design-patterns null-object-pattern
最近我遇到了Null Object设计模式,我的同事说它可以用来取消整个代码中遇到的空指针检查.
例如,假设DAO类返回有关Customer的信息(在名为CustomerVO的值对象中).我的主要课程应该提取firstName和emailId并向客户发送电子邮件.
...
CustomerVO custVO = CustomerDAO.getCustomer(customerID);
if(custVO != null) { // imp, otherwise we may get null ptr exception in next line
sendEmail(custVO.getFirstName(), custVO.getEmailID());
}
...
Run Code Online (Sandbox Code Playgroud)
这是一个非常简单的示例,但是这样的空检查可以根据值对象的复杂性快速传播到整个代码中.
我有两个与null检查的问题, - 它们倾向于使代码变得丑陋且难以阅读 - 经验较少的开发人员在实际上应该抛出异常时进行不必要的空检查.例如,在上面的代码中,最好从getCustomer()本身抛出异常,因为如果它无法找到给定CustID的客户信息,则表明CustID无效.
好吧,回到null对象模式,我们可以使用'null'CustomerVO对象隐藏空检查吗?
CustomerVO {
String firstName = "";
String emailID = "";
}
Run Code Online (Sandbox Code Playgroud)
这不是有意义的.你怎么看?
为了最大限度地减少应用中的空值检查,您遵循了哪些内容.
在这种情况下,空对象可能不合适,因为默认值实际上可能隐藏了实际上的异常。如果您发现自己必须检查是否有安全的 null 来执行某些其他活动,则 null 模式不会给您带来任何好处。
正如您所说,许多新开发人员花时间试图保护他们的代码免受比停止程序更糟糕的异常情况的影响。