0

私は小規模なプロジェクトに取り組んでおり、リレーショナル データベースとドキュメント データベースの両方を使用できる多用途のデータ ストレージ オプションを開発しようとしています。テスト目的で、MySQL と MongoDB から始めています。すべてのロジックとデータはドメイン オブジェクト (値オブジェクトで構成される) に格納されるため、それを適切なデータ ストレージに "マッピング" するエレガントな方法が必要です。

これについて私を助けることができるかもしれないデザインパターンはありますか?

4

1 に答える 1

0

ドメイン駆動設計 (DDD) アプローチを採用したい場合は、リポジトリが探しているものかもしれません。

まず、リポジトリ コントラクト (またはインターフェイス) を定義する必要があります。通常は次のようになります (使用している言語に合わせて調整します)。

public IMyObjectRepository {
    MyObject get(int id);
    Collection<MyObject> getAll();
    void save(MyObject myObject); 
    void delete(int id);
} 

そして、MySQL と MongoDB の実装を行うことができます。

の実装とその作成方法からクライアントを切り離すために、クライアントは、 Abstract FactoryパターンなどIMyObjectRepositoryを介してそれを要求できます。次に、プロパティ ファイルまたはその他の種類の環境イントロスペクションに基づいて、正しい実装をそれらに返すことができます。

これのDDDの側面はおそらく二次的なものです。これはDDDなしで行うことができます。あなたの主な関心事は、ある種の実装中立的な方法 (インターフェイス) で永続化コントラクトを定義し、クライアントを実装 (抽象ファクトリ) に結合せずにそれへの参照を取得する方法を用意することです。リポジトリは 1 つの方法です。DAO (または 2 つの組み合わせ) で実行できます。

DAOAbstract Factoryを使用した例を次に示します。これにより、いくつかのアイデアが得られます。

于 2013-10-01T02:33:22.110 に答える