guo*_*guo 2 oop singleton design-patterns
今天我读了很多关于单例模式有多糟糕的文章,比如
违反单一责任原则
无法子类化
无法使用抽象类或接口类
整个应用程序的高耦合
使单元测试变得困难
然后我记得我有一个程序,其中有一个名为的类,User该类具有字段userName和password与 相关的其他内容User。在我看来,该程序应该只有一个用户实例,该实例是在有人登录我的程序时创建的。基于此,我应该坚持设计User类为单例模式,还是有什么好的设计理念我应该使用?
另外:
另一个疑问。使用单例模式,我可以在任何地方获得唯一的实例myUser。如果我不应该使用单例模式,我应该如何获得唯一的实例myUser?
您可能想查看依赖注入。如今,有许多框架可以帮助您连接依赖项注入,以便您可以在框架中指定您期望某个对象表现得像单例。换句话说,如果另一个对象也需要相同的“单例”对象,则框架不应创建新实例,而应“注入”已经存在的实例。
如果您使用 Java 进行开发,您可以看看 Guice 的做法: https: //github.com/google/guice/wiki/Scopes 它们允许您指定是否要创建“热切的单例”(创建即使还不需要)或“惰性单例”(仅在需要时动态创建)。即使您不使用 Java,其他编程语言也有类似的概念,您可以留意一下。
我建议您将“User”对象设置为不是单例,并将“User”对象“注入”到需要“User”对象的类中。如果可能,请让您选择的依赖项注入框架来处理连接,这样您就不会意外创建多个实例。
这样,您仍然能够实现您在问题中发布的上述大部分优势,并且仍然享受“单身人士”的好处。
| 归档时间: |
|
| 查看次数: |
708 次 |
| 最近记录: |