私は、ある永続性パターンから別の永続性パターンに移行しようと取り組んでいるプロジェクトに取り組んでいます。
エンタープライズアプリケーションアーキテクチャのパターン、デザインパターン、およびこの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テーブルの行を表します。Customerクラスは1行ですが、実際には2つの異なるインターフェイス(IBillingContactInfo、IShippingContactInfo)を実装しています。
これまで、Customerオブジェクト全体をあちこちに渡して、必要な変更を加えて保存しただけの2つのインターフェイスはありませんでした。
ここで問題が発生します。これらの2つのインターフェイスができたので、IContactInfoを取得してユーザーに表示し、ユーザーが間違っている場合に修正できるようにするコントロールを作成できます。現在、IContactInfoインターフェイスは、変更を永続化するためのSave()を実装していません。
他のよく知られたソリューションに完全に切り替えることなく、この制限を回避するための優れたデザインパターンに関する提案はありますか?すべてのインターフェイスにSave()メソッドを追加したくはありませんが、最終的にはそれを実行する必要があるかもしれません。