java我应该使用修改过的单例设计模式,只允许对其实例进行一次引用吗?
我有一个类,通常只生成工厂对象,但是这个类在整个程序中只能在一个指定的位置使用一次。在这种情况下使用的最佳设计模式是什么
我认为修改单例设计,只允许在整个程序中引用一个实例是正确的。因此,只有对getInstance()的第一个调用返回工厂库
这是个好主意还是个坏主意?我是否错过了解决这个问题的另一个基本设计模式
谢谢你的帮助
你可以在下面搜索框中键入要查询的问题!
我有一个类,通常只生成工厂对象,但是这个类在整个程序中只能在一个指定的位置使用一次。在这种情况下使用的最佳设计模式是什么
我认为修改单例设计,只允许在整个程序中引用一个实例是正确的。因此,只有对getInstance()的第一个调用返回工厂库
这是个好主意还是个坏主意?我是否错过了解决这个问题的另一个基本设计模式
谢谢你的帮助
# 1 楼答案
如果只使用一次,只调用一次。如果您希望强制它只能在代码中的那个位置被调用,您可以通过使它成为包含调用的类的私有内部类来完全控制它
# 2 楼答案
问题是——如果将来有人决定在程序的不同部分使用这个类,它应该如何工作
没关系,让他们来吧。它不会影响它的其他用途。(不要使用单例。)
B.如果有很好的理由,那没关系,但它会打乱它的第一次使用(由于共享资源或其他原因),因此他们必须使用其他地方正在使用的相同实例。(使用单例。)
你说它在整个程序中只能在一个特定的地方使用一次。如果由于技术限制,这是真的,那么将其设为单例。如果这是真的,因为这就是你对设计的看法,但是没有技术上的理由来设置限制,那么就不要将其设置为单例
# 3 楼答案
我不认为制作一个单身汉会阻止人们在不止一个地方使用它,因为单身汉通常是全球性的
在您的情况下,我可能只是将工厂类设置为需要使用它的类的内部。或者简单地使用访问修饰符,以确保它不会在其他任何地方使用(包私有或受保护可能是您正在寻找的)
# 4 楼答案
与其添加一个最终的静态字段=new SingletonClass(),并将该构造函数设置为私有,不如在将其作为参数传递给所有需要副本的内容时,自己控制创建过程。这就是依赖项注入的整个点,类不需要调用静态字段来获得一个单例,而是在ctor或SETER中作为参数接收所需的实例