2011-08-13 68 views
2

我有一個包含對象圖的數據庫。但是,在使用包含在數據庫中的對象時,我需要添加其他功能。覆蓋現有的對象圖?

我不能更改數據庫的課,所以我想,我唯一的選擇就是讓自己的數據庫相當於對象組成的包裝類,並創建了附加功能的方法和字段一起轉發方法。例如:

public class Foo() { 
    private DBFoo databaseFoo; 

    // a bunch of forwarding methods to databaseFoo 
    // some methods for additional functionality 
} 

我有一個很好的模式努力構建上預先存在的數據庫對象圖的頂部我的包裝對象。特別是如何重建我的對象圖來鏡像數據庫中的圖形(以及對其他對象的各種引用)。有沒有人有這種問題的經驗?

+0

該圖表最初是如何構建的? – casablanca

+0

它已經存在。 – Jim

+0

您能否描述現有圖形的結構,例如你能得到所有節點和邊緣的列表嗎? – casablanca

回答

0

我可以在這裏看到兩個問題:

a)。給定一些引用dbClassB的dbClassA和dbClassC的集合,以及dbClassB和dbClassC,它們本身都是非常複雜的:什麼樣的代理設計是合適的?如果dbClassA有methos

dbClassB getB() { ... } 

,我們可以很容易地看到映射到

myClassB getB() { return new myClassB(theDbClassB.getB()); } 

或一些這樣的。但是,我們對收藏品究竟做了什麼?

List<dbClassC> getAllCs() { } 

那成爲了什麼?

我想,這是一個可以解決的問題,只是一個選擇的一些規則的問題。

我懷疑你更關心:

b)。創建所有這些代理類。將選定的規則應用於許多類別。一種可能的方法是使用代碼生成器功能,例如JET in Eclipse。我已經很好地看到了類似問題的這種能力。