【发布时间】:2010-10-17 05:53:27
【问题描述】:
最近我遇到了空对象设计模式,我的同事说它可以用来消除在整个代码中遇到的空指针检查。
例如,假设一个 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 = "";
}
这不是很有意义。你觉得呢?
您要遵循哪些措施来最大程度地减少应用中的空检查。
【问题讨论】:
标签: design-patterns null-object-pattern