2016-03-30 8 views
0

リポジトリのデザインパターンに関する質問、多くのデータソースとのやりとりの方法があります。例えばリポジトリのデザインパターン

、私はこれらのリポジトリがあります。

  • UserRepositorySql
  • UserRepositoryMongoを
  • UserRepositoryXml

(これは私が各データソースのリポジトリを作成する意味でも正しいですか?? )

何が良いですか:

  • UserRepositoryと呼ばれる抽象クラスと、その他のものはUserRepositoryから拡張されています。

  • これらの3つのリポジトリのインターフェースです。私は抽象クラスを使用している場合、私は私の特定のリポジトリオブジェクトを返しますUserFactory(工場出荷時のパターン)クラスを実装することができ、特定のデータソースの特定のリポジトリを取得する方法に

イム明確ではありません。 (これは正しいですか?)

しかし、インターフェイスを使用すると、どのように特定のリポジトリを取得できますか? (工場のパターンは親の抽象クラスを必要とするので、私はそうですか?)

また、私は "特定のリポジトリ"と言うとき、特定のデータソースを持つリポジトリを受け取ります。

ありがとう、 redigaffi。 UserRepositoryという抽象クラス

と他のものがUserRepositoryから延びる:

答えて

1

何優れています。

これらの3つのリポジトリ用のインターフェイスです。

最も簡単なものから始めます。 IMHO、これはインターフェースです。必要が生じた場合は、抽象基本クラスを追加します。

しかし、インターフェイスを使用すると、特定のリポジトリを取得する方法はありますか。

返されるリポジトリの種類を決定するロジックを含むファクトリを使用します。

+0

また、抽象クラスを使用するアイデアは悪くないですか?私の考えは、インターフェイスを使用する唯一の "遺産"の方法だった。あなたの答えをありがとう、どちらの方法も有効な解決策かもしれない? – redigaffi

+1

それぞれのアプローチには長所と短所があります。抽象基本クラスは、共有ビヘイビアーを定義する能力を与えますが、インターフェースはそうではありません。 –

関連する問題