Java 删除重复代码的模式
我一直在研究的一个Java项目与几个RDBMS集成。对于我们来说,减少代码重复的最明显的方法是创建一个类型层次结构,如:Java 删除重复代码的模式,java,oop,design-patterns,code-duplication,Java,Oop,Design Patterns,Code Duplication,我一直在研究的一个Java项目与几个RDBMS集成。对于我们来说,减少代码重复的最明显的方法是创建一个类型层次结构,如: ThirdPartySoftware (superclass) /|\ / | \ TPS1 2 3 然而,这种方法最终导致TPS1、TPS2和TPS3的实现非常相似(但不完全相同!)。如果超类没有意识到每一个地方都可能有
ThirdPartySoftware (superclass)
/|\
/ | \
TPS1 2 3
然而,这种方法最终导致TPS1、TPS2和TPS3的实现非常相似(但不完全相同!)。如果超类没有意识到每一个地方都可能有不同之处,那么很难将所有功能都引入到超类中,破坏封装子类化就是为了给我们带来好处
我们考虑过的一种方法是通过DBs共享的特性来表示DBs,例如“支持特性X”和“不能执行特性Y”,但是不完全清楚代码是否会以这种方式更易于维护,因为:
也许,org.hibernate.dialent.dialent会给你一些新的想法。我不是一个java爱好者,但是除了超类/抽象类之外,你还可以使用接口和。这些模式不是排他性的,我经常有接口实现,它们是主类的子类,例如
SqlDataAccess:BaseDataAccess、IDataAccess和TPSDataAccess:SqlDataAccess、ITPSDataAccess如果没有可以抽象出来的代码,那么我认为您只需要写出它。对于可以抽象出来的特性,可能会有用。Scala在特性方面做得很好。关于stackoverflow,一些人提出了Java中的mixin/traits实现,例如,或者仅仅是一个想法——为什么不使用hibernate或其他ORM框架。我对这个问题的措辞有点含糊不清,但我们正在对数据库和底层数据库文件执行管理操作,而不是在其中存储对象,不幸的是,ORM在这种情况下帮不了我们。