0

我必须设计一些存储库来处理 CRUD 操作。我会将所有这些 repos 放在一个 Facade 中。

这个 Facade 应该是 Singleton 吗?

一个例子:

FacadeLibrary [单例?]

- 书库| 客户资料库 | 租赁存储库

或者,存储库应该是单例?

或者两者都不是?

4

2 回答 2

1

不!!!!避免使用单例。Singleton 类似于系统上的全局变量。通常,如果系统阻止您多次创建某些资源,您应该使用单例。例如,在 Direct3D 中,您不能两次创建 Direct3D 环境,因此您可以使用单例,但在任何其他情况下都避免使用它。

于 2011-12-01T15:41:59.940 回答
0

我所做的是向类型本身添加一个静态属性以访问该类型的存储库。该方法使用 IoC 来解决它:

public class Book
{
    public static IBookRepository Repository { get { return IoC.Resolve<IBookRepository>(); } }
    ...
}

然后我可以拨打电话

Book myBook = Book.Repository.Find(id);

我喜欢这个,因为它将 Book-y-ness 的东西放在一起,并允许我通过配置 IoC 为存储库换入/换出不同的实现以进行测试。

于 2011-12-01T15:46:31.870 回答