我设计了一些存储库来处理CRUD操作。 我将把所有这些回购放在一个门面。
这个Facade应该是单身人士吗?
一个例子:
FacadeLibrary [Singleton?]
- BookRepository | ClientRepository | RentalRepository
或者存储库应该是Singleton?
或者两者都没有?
答案 0 :(得分:1)
没有!!!!避免使用单身人士。 Singleton就像是系统中的全局变量。通常情况下,如果系统阻止您多次创建某些资源,则应使用单例。例如,在Direct3D中,您无法创建两次Direct3D环境,因此可以使用单例,但在任何其他情况下都可以避免使用它。
答案 1 :(得分:0)
我所做的是为类型本身添加一个静态属性以获取该类型的存储库。该方法使用IoC来解决它:
public class Book
{
public static IBookRepository Repository { get { return IoC.Resolve<IBookRepository>(); } }
...
}
然后我可以拨打电话,如
Book myBook = Book.Repository.Find(id);
我喜欢这个,因为它将Book-y-ness的东西保持在一起,并且允许我通过配置IoC来交换存储库的不同实现以进行测试。