CRUD 操作を処理するために、いくつかのリポジトリを設計する必要があります。これらすべてのリポジトリを 1 つの Facade に配置します。
このファサードはシングルトンにする必要がありますか?
例:
FacadeLibrary [シングルトン?]
- ブックリポジトリ | クライアントリポジトリ | レンタルリポジトリ
それとも、リポジトリはシングルトンにする必要がありますか?
それともどちらでもない?
CRUD 操作を処理するために、いくつかのリポジトリを設計する必要があります。これらすべてのリポジトリを 1 つの Facade に配置します。
このファサードはシングルトンにする必要がありますか?
例:
FacadeLibrary [シングルトン?]
- ブックリポジトリ | クライアントリポジトリ | レンタルリポジトリ
それとも、リポジトリはシングルトンにする必要がありますか?
それともどちらでもない?
いいえ!!!!シングルトンの使用は避けてください。Singleton は、システム上のグローバル変数のようなものです。通常、システムがリソースを複数回作成できない場合に備えて、シングルトンを使用する必要があります。たとえば、Direct3D では Direct3D 環境を 2 回作成することはできないため、シングルトンを使用できますが、それ以外の場合は使用しないでください。
私が行ったことは、型自体に静的プロパティを追加して、その型のリポジトリにアクセスすることです。メソッドは IoC を使用して解決します。
public class Book
{
public static IBookRepository Repository { get { return IoC.Resolve<IBookRepository>(); } }
...
}
次に、次のような電話をかけることができます
Book myBook = Book.Repository.Find(id);
Book-y-ness をまとめて保持し、IoC を構成することでテスト用にリポジトリのさまざまな実装をスワップイン/アウトできるため、これが気に入っています。