有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我应该使用修改过的单例设计模式,只允许对其实例进行一次引用吗?

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

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

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

谢谢你的帮助


共 (4) 个答案

  1. # 1 楼答案

    I have a class that would normally just generate factory objects, however this class should only used once throughout the program in once specifix place. What is the best design pattern to use in this instance?

    如果只使用一次,只调用一次。如果您希望强制它只能在代码中的那个位置被调用,您可以通过使它成为包含调用的类的私有内部类来完全控制它

  2. # 2 楼答案

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

    没关系,让他们来吧。它不会影响它的其他用途。(不要使用单例。)

    B.如果有很好的理由,那没关系,但它会打乱它的第一次使用(由于共享资源或其他原因),因此他们必须使用其他地方正在使用的相同实例。(使用单例。)

    你说它在整个程序中只能在一个特定的地方使用一次。如果由于技术限制,这是真的,那么将其设为单例。如果这是真的,因为这就是你对设计的看法,但是没有技术上的理由来设置限制,那么就不要将其设置为单例

  3. # 3 楼答案

    however this class should only used once throughout the program in once specifix place

    我不认为制作一个单身汉会阻止人们在不止一个地方使用它,因为单身汉通常是全球性的

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

  4. # 4 楼答案

    与其添加一个最终的静态字段=new SingletonClass(),并将该构造函数设置为私有,不如在将其作为参数传递给所有需要副本的内容时,自己控制创建过程。这就是依赖项注入的整个点,类不需要调用静态字段来获得一个单例,而是在ctor或SETER中作为参数接收所需的实例