我正在研究一個項目,我正在試圖從一個持久模式轉移到另一個模式。持久性設計模式
我看着在模式企業應用架構的,設計模式,並在這裏this MSDN文章尋求幫助。我們目前的模式是MSDN文章中描述的活動記錄模式。作爲邁向更多模塊化代碼庫的第一步,我們試圖將我們的一些業務對象(又名錶)分解爲多個接口。
因此,舉例來說,假設我有一個商店應用程序是這樣的:
public interface IContactInfo
{
...
}
public interface IBillingContactInfo: IContactInfo
{
...
}
public interface IShippingContactInfo: IContactInfo
{
...
}
public class Customer: IBillingContactInfo, IShippingContactInfo
{
#region IBillingContactInfo Implementation
...
#endregion
#region IShippingContactInfo Implementation
...
#endregion
public void Load(int customerID);
public void Save();
}
Customer類代表了我們的客戶表中的一行。即使Customer類是一行,它實際上也實現了兩個不同的接口:IBillingContactInfo,IShippingContactInfo。
從歷史上看,我們沒有那兩個接口,我們只是在整個Customer對象周圍傳遞這些接口,然後做出我們想要的任何更改並將其保存。
這裏是問題出現的地方。現在我們有了這兩個接口,我們可能有一個控件需要一個IContactInfo,將其顯示給用戶,並允許用戶在錯誤的情況下進行糾正。目前我們的IContactInfo接口沒有實現任何Save()以允許對其進行修改。
有關良好設計模式的任何建議,以避免此限制而無需完全切換到其他衆所周知的解決方案?我真的不想通過併爲我的所有接口添加Save()方法,但它可能是我最終需要做的。
也許我錯過了這個觀點..但是你不能只在'IContactInfo'接口中包含'Load'和'Save'方法嗎? –
如果控件需要Save()的能力,爲什麼要採用IContactInfo?如果可能創建一個實現IContactInfo的SavableContactInfo類型,然後讓該控件獲取一個SavableContactInfo對象? – itsme86
@SimonWhitehead我可以包含一個Load和Save,但有近100個表格,我們可能會將這些表格分解到接口中,以便確保在開始沿着這條路線前,我不會錯過更明顯和更好的戰鬥測試。 –