0

一意の DB リポジトリを含む 2 つのクラスがあります。どちらも異なる DB と対話します。これらのリポジトリを 1 つのインターフェイスに統合したいと考えています。これは可能ですか、それともどちらのクラスもすべてのインターフェイス メンバーを完全に実装していると見なされないということは常にありますか?

このようなものが欲しいのですが、

public class FooDatabase : IFooBarDatabases
{
    public IFooRepository FooRepository { get; set; }
}

public class BarDatabase : IFooBarDatabases
{
    public IBarRepository BarRepository { get; set; }
}

public interface IFooBarDatabases
{
    IFooRepository FooRepository { get; }

    IBarRepository BarRepository { get; }
}
4

1 に答える 1

1

リポジトリは「データベースに依存しない」必要があります

リポジトリは、ドメイン レイヤーとデータ マッピング レイヤーの間を仲介し、メモリ内のドメイン オブジェクト コレクションのように機能します。クライアント オブジェクトは、クエリ仕様を宣言的に構築し、満足のためにリポジトリに送信します。オブジェクトは、オブジェクトの単純なコレクションと同様に、リポジトリに追加および削除できます。また、リポジトリによってカプセル化されたマッピング コードが、バックグラウンドで適切な操作を実行します。

ユア リポジトリを作成する方法は、どのデータベースがヒットするかではなく、実際にはドメインによって異なります。リポジトリは、どのデータベースがヒットするかを気にする必要はありません。

http://martinfowler.com/eaaCatalog/repository.html

于 2012-05-09T16:20:11.000 に答える