ドメイン駆動設計 (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 つの組み合わせ) で実行できます。
DAOとAbstract Factoryを使用した例を次に示します。これにより、いくつかのアイデアが得られます。