最近我了解到Null Object设计模式,我的同事说它可以用来消除代码中遇到的空指针检查。
例如,假设一个DAO类返回有关客户的信息(在名为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());
}
...
这是一个非常简单的例子,但是基于值对象的复杂性,这样的空值检查可能会快速在代码中传播。
我有两个关于空值检查的问题: - 它们会让代码变得丑陋且难以阅读 - 经验不足的开发人员会在不必要的情况下进行空值检查,实际上应该抛出异常。例如,在上面的代码中,最好从getCustomer()本身抛出异常,因为如果无法找到给定CustID的客户信息,则表示CustID无效。
好的,回到空对象模式,我们可以使用“null” CustomerVO对象来隐藏空值检查吗?
CustomerVO {
String firstName = "";
String emailID = "";
}
不要这样做,这没有意义。你认为呢?
您在应用程序中遵循哪些方法来最小化空值检查?