首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我是否应该使用修改后的单例设计模式,只允许对其实例的一个引用?

我是否应该使用修改后的单例设计模式,只允许对其实例的一个引用?
EN

Stack Overflow用户
提问于 2011-01-14 19:21:05
回答 4查看 203关注 0票数 0

我有一个通常只生成工厂对象的类,但是这个类在整个程序中应该只在一个指定的地方使用一次。在这种情况下,最好的设计模式是什么?

我认为在整个程序中只允许一次引用实例的修改后的单例设计将是正确的方法。因此,只有对getInstance()的第一次调用才会返回工厂库。

这是个好主意还是坏主意?我是不是错过了另一个解决这个问题的基础设计模式?

谢谢你的帮助。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-14 19:49:13

与其添加最后一个静态字段= new SingletonClass()并将ctor设为私有,为什么不在将其作为参数传递给所有需要复制的内容时自己控制创建。这就是依赖注入的全部要点,类不需要调用静态字段来获取单例,而是在ctor或setter中接收所需的实例作为参数。

票数 2
EN

Stack Overflow用户

发布于 2011-01-14 19:28:03

但是,这个类在整个程序中应该只在一个指定的位置使用一次

我不认为创建单例会阻止人们在多个地方使用它,因为通常单例是全局状态。

在您的例子中,我可能只会将工厂类放在需要使用它的类的内部。或者简单地使用访问修饰符,以确保它不会在其他地方使用(包私有或受保护可能是您正在寻找的)。

票数 1
EN

Stack Overflow用户

发布于 2011-01-14 19:28:43

问题是,如果将来有人决定在程序的不同部分中使用这个类,它应该如何工作?

答:没问题,随他们去吧。它不会影响它的其他用途。(不要使用单例。)

B.如果有很好的理由,那很好,但它会在第一次使用时搞砸(由于共享资源或其他原因),所以他们必须使用在其他地方使用的相同实例。(使用单例。)

您说它应该在整个程序中只使用一次,并在一个特定的地方使用。如果由于技术限制,这是真的,那就让它成为单例。如果这是真的,因为这就是您对设计的看法,但没有技术原因将限制放在适当的地方,那么就不要让它成为单例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4690485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档