【发布时间】:2011-08-28 19:42:09
【问题描述】:
在 java 中,我正在编写一些 DTO 对象,它们都继承自 AllocationDTO。
然后将这些对象的列表传递到 DAO 对象中以保存到数据库中。
根据要保存AllocationDTO 的哪个子类型,保存逻辑会发生变化(例如,要保存到数据库中的哪个表等)
我发现自己使用这样的代码:
for (AllocationDTO x : listOfAllocationDtos) {
if (x instanceof ManagerAllocationDTO) {
Manager m = (x(ManagerAllocationDTO)).getManager();
// save manager etc to managerallocs
} else if (x.getId() == AllocationDTO.TYPE_SPECIAL1) {
// save to specialAlloc1 table
} else if (x.getId() == AllocationDTO.TYPE_SPECIAL2) {
// save to specialAlloc2 table
}
}
ManagerAllocationDTO 有一个额外的字段将分配与经理相关联,但对于 specialalloc1/2 的情况,我没有创建子类型,因为数据的唯一区别是它保存到的表。
我的问题是一个软设计问题 - 这是最好的方法吗?
【问题讨论】:
-
只是对您的代码的评论:您确实应该使用
equals方法而不是==来比较您的字符串。尤其是在使用数据库时。 -
不太确定像 "(x.getId() == "specialAlloc2")" 这样的代码 - 你真的对对象相等感兴趣还是你真的应该使用 "x.getId().equals ("specialAlloc2")" ?
-
"specialAlloc2" 是一个常数,所以我认为在这种情况下对象相等性测试是可以的。我在发布此内容后立即更改了代码以引用所述内容,并意识到你们两个刚刚评论的内容相同。我已编辑问题以反映我的更改。你同意吗?
标签: java design-patterns dao dto