Facade 和 Repository 模式:它们应该是 Singleton?
我必须设计一些存储库来处理 CRUD 操作。 我会将所有这些存储库放在一个 Facade 中。
这个 Facade 应该是 Singleton 吗?
一个例子:
FacadeLibrary [Singleton?]
- 图书库 |客户端存储库 | RentalRepository
或者存储库应该是 Singleton?
或者两者都不是?
I've to design some Repositories to handles CRUD operations.
I will put all of these repos in one Facade.
Should this Facade be a Singleton?
An example:
FacadeLibrary [Singleton?]
-
BookRepository | ClientRepository | RentalRepository
Or maybe the Repository should be Singleton?
Or neither?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不!!!!避免使用单例。 Singleton 类似于系统上的全局变量。通常,您应该使用单例,以防系统阻止您多次创建某种资源。例如,在 Direct3D 中,您不能两次创建 Direct3D 环境,因此您可以使用单例,但在任何其他情况下都避免使用它。
No!!!! Avoid to use singleton. Singleton is something like a global variable on your system. Normally you should use singleton in case if the system prevent you to create some resource more than one time. For example in Direct3D you cannot create Direct3D environment two times so there you could use a singleton but in any other case avoid to use it.
我所做的是将静态属性添加到类型本身以访问该类型的存储库。该方法使用 IoC 来解决它:
然后我可以像这样进行调用
,因为它将 Book-y-ness 的东西放在一起,并允许我通过配置 IoC 换入/换出存储库的不同实现以进行测试。
What I've done is add a static property to the type itself to get to that type's repository. The method uses the IoC to resolve it:
Then I can make calls like
I like this because it keeps Book-y-ness things together and allows me to swap in/out different implementations for the repository for testing by configuring IoC.