我正在从事一个项目,我正在努力尝试从一种持久性模式转移到另一种持久性模式。
我查看了Patterns of Enterprise Application Architecture、Design Patterns,并在此MSDN 文章中寻求帮助。我们当前的模式是 MSDN 文章中描述的 Active Record 模式。作为向更加模块化的代码库迈出的第一步,我们试图将我们的一些业务对象(又名表)分解为多个接口。
例如,假设我有一个类似这样的商店应用程序:
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() 方法,但这可能是我最终需要做的。