最近我遇到了空对象设计模式,我的同事说它可以用来消除在整个代码中遇到的空指针检查。
例如,假设一个 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 无效。
好的,回到空对象模式,我们可以使用“空”CustomerVO 对象来隐藏空检查吗?
CustomerVO {
String firstName = "";
String emailID = "";
}
不要这样有意义。你怎么看?
以及在您的应用程序中最小化空检查的操作是什么。