2011-06-06 41 views
0

我有一個處理(虛擬)匯票交易的程序,並且有很多具有需要將數據保存到數據庫的邏輯的類。我的問題是,如果我將直接從各個類中調用存儲庫,或者如果我將引發一個DatabaseManager類對象可以偵聽的事件,並因此將從這一個類中調用所有存儲庫。從基於事件偵聽器的集中類調用存儲庫?

我沒有使用數據庫和知識庫的經驗,所以希望在這裏有更深入的見解和技巧。就像什麼標準你會選擇不同的方法等

這可能是重要的要注意,在這種情況下數據庫不用於檢索執行程序邏輯的數據,除了程序啓動。所以它基本上保留了運行時對象中的所有數據,並且只是傾倒到數據庫進行歸檔。

回答

1

我會將IRepository傳遞給我的類,然後他們可以調用以保存數據。一方面,它使得測試更容易,因爲您可以輕鬆注入模擬存儲庫,另一方面它明確表示您的類具有類似的依賴關係。您可能想要搜索術語Dependency Injection

簡單的例子:

class Account 
{ 
    public Account(IRepository<Account> repository) 
    { 
     _Repository = repository; 
    } 

    public void ChangeOwner(Owner newOwner) 
    { 
     // change ownership 
     _Repository.Save(this); 
    } 
}