我的JEE 7应用程序包含两个实体(暂时):Owner
和Company
。我还创建了OwnerService
,其中包含boolean ownerHasCompany(Owner, Company)
和void removeCompanyOfOwner(Owner, Company)
等方法。当Company
不属于Owner
时,我该怎么办?我有两个想法:
ownerHasCompany
内使用removeCompanyOfOwner
方法,当它返回false
时,然后抛出异常(但是哪个?IllegalArgumentException
?)。但是为了避免这种异常,客户端有义务在他的代码中使用ownerHasCompany
方法。因此,相同的方法将被执行两次。Owner
是否有Company
,并且只留给客户。 (但我想在服务中使用逻辑,并且只在我的控制器中调用适当的方法。)哪种方式会更好?或者可能有另一种解决方案?
答案 0 :(得分:1)
我喜欢使用API,其中有一种方法可以测试另一种方法何时会引发异常。所以我认为客户端的代码应该是:
if (ownerHasCompany(owner, company)) {
removeCompanyOfOwner(owner, company);
}
方法removeCompanyOfOwner
可以从
if (!ownerHasCompany(owner, company))
throw new IllegalStateException();
是的,这意味着方法ownerHasCompany
被调用两次。我不知道这项检查是如何完成的,但这种效率低下似乎是微不足道的。
另一种方法是让removeCompanyOfOwner
返回boolean
;如果公司被删除,则true
,否则false
。使用此解决方案,方法removeCompanyOfOwner
开始
if (!ownerHasCompany(owner, company))
return false;