我有一个包含对象图的数据库。但是,在使用数据库中包含的对象期间,我需要添加额外的功能。
我无法更改数据库的类,所以我认为我唯一的选择是使包装类由它们的数据库等效对象组成,并创建转发方法以及用于附加功能的方法和字段。例如:
public class Foo() {
private DBFoo databaseFoo;
// a bunch of forwarding methods to databaseFoo
// some methods for additional functionality
}
我正在努力寻找一个好的模式来在预先存在的数据库对象图之上构建我的包装器对象。特别是如何重建我的对象图以反射(reflect)数据库中的图(及其对其他对象的所有各种引用)。有没有人遇到过这类问题?
最佳答案
我在这里看到两个问题:
一个)。给定一些引用 dbClassB 的 dbClassA 和 dbClassC 的集合,其中 dbClassB 和 dbClassC 本身都是任意复杂的:什么样的代理设计是合适的?如果 dbClassA 有方法
dbClassB getB() { ... }
我们可以很容易地看到一个映射到
myClassB getB() { return new myClassB( theDbClassB.getB() ); }
或类似的。但我们究竟用这些集合做什么呢?
List<dbClassC> getAllCs() { }
那会变成什么?
我认为这是一个可以解决的问题,只是选择一些规则的问题。
我怀疑您更关心:
b).创建所有这些代理类。将选择的规则应用于很多很多类。一种可能的方法是使用代码生成器功能,例如 JET in Eclipse .我已经看到此功能非常适合用于解决类似问题。
关于java - 覆盖现有的对象图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7047830/