【发布时间】:2016-10-04 05:42:59
【问题描述】:
今天看了很多关于Singleton Pattern的不好的文章,比如
违反单一责任原则
无法继承
无法使用抽象类或接口类
跨应用程序的高耦合
使单元测试变得困难
然后我记得我有一个程序,它有一个名为User 的类,其中有userName 和password 字段以及与User 相关的其他内容。在我的设想中,该程序应该只有一个用户实例,它是在人类登录我的程序时创建的。基于此,我应该坚持将User 类设计为单例模式,还是应该使用任何好的设计理念?
补充:
另一个疑问。使用单例模式,我可以在任何地方获得唯一的实例myUser。如果我不应该使用 Singletion Pattern,我应该如何获得唯一的实例myUser?
【问题讨论】:
-
除非小猫死去,否则您通常不需要强制执行单个实例并提供对其的全局访问。您控制您的应用程序对象,因此只需创建用户一次且仅一次。同样,当您使用依赖注入时,通常不需要对对象的全局访问。
-
提示:我会首先为该类找到一个新名称; User 类应该只有一个实例是非常违反直觉的。换句话说:为所有用户设置一个类用户不是更有意义吗?和一个名为 CurrentUser 或类似的特殊类(甚至可能是单例)?!
-
@GhostCat 好建议,谢谢。
标签: oop design-patterns singleton