我有两个数据访问对象,这些对象是反向生成的并且被我的应用程序使用。它们代表非常相似的表格。一张桌子有另外几列。由于面向业务的数据库所有权问题,这超出了我的控制范围。删除不带接口的复制/粘贴代码
该应用程序目前有两个对这些DAO进行操作的存储库实现。这些实现非常相似。其中有一些额外的操作对应于第二个DAO上的额外列。然而,除了少数几个例外,其中一个实现是另一个的复制和粘贴。实现数百行。
所以我想删除复制/粘贴作业。理想情况下,我可以在DAO前面添加一个接口,然后使用抽象类来保存共享代码(几乎所有代码)。但是,我无法在DAO之前放置一个接口。记住它们是反向生成的,如果不升级我们的ORM软件,我不认为这是一个合理的选择(Kodo 3.x我相信,改变它并不在范围内)。
我能想到的唯一一件事情就是能够反映一些糟糕的东西,但这会导致比现在更糟糕的事情。
任何聪明的解决方案?
编辑:这里很淡化的代码示例
package one.dao
//reverse generated
class UserDao {
getFirstName(..);
setFirstName(..);
getLastName(..);
.... 50 more just like this
}
package two.dao
//reverse generated
class UserDao {
getFirstName(..);
setFirstName(..);
getLastName(..);
.... the same 50 more as above
getSomethingElse(..); //doesn't exist in one.dao.UserDao
setSomethingElse(..); //doesn't exist in one.dao.UserDao
}
class RepositoryOne(one.dao.UserDao userDao) {
//insert code here. perform operations on nearly all methods, lots of code
}
class RepositoryTwo(two.dao.UserDao userDao) {
//insert code here. same as Repository one
//some extra code that isn't above, maybe 10 lines
}
你可以发布一个简单的\淡化代码示例? – javamonkey79 2011-01-13 01:18:14