我可以在 java 中的单例 class 中添加一个额外的 public 方法吗

can i add an extra public method in singleton class in java

我有一个单例 class 并且我添加了 msg 方法但是我不确定是否可以将它添加到单例 class 或不

public class Singleton {
    private static Singleton single_instance = null;
    private Singleton() {
       
    }

    public void msg(String msg){  
        System.out.println(msg);
    } 

    public static Singleton getInstance() {
        if (single_instance == null) {
            single_instance = new Singleton();
        }

        return single_instance;
    }
}

Singleton 是一种 Creational Design Pattern,它确保其只有一个对象kind 存在并为任何其他代码提供对其的单一访问点。除此之外,它只是一个普通的 class,可以有尽可能多的 public 方法来满足它的设计要求。

Singleton 对象可以改变(改变其内部属性的值——变量),也可以是不可变的(例如,Java enums 可用于创建 Singleton 实例)。

以您的 class 为例,您可以这样做并且完全合法:

public class Singleton {
    private static Singleton single_instance = null;
    private String message = "none";
    private Singleton() {
       
    }

    public void showCurrentMessage(){  
        System.out.println(msg);
    }
    public void updateMessage(String msg) {
        this.msg = msg;
    }

    public static Singleton getInstance() {
        if (single_instance == null) {
            single_instance = new Singleton();
        }

        return single_instance;
    }
}

请注意,我们严格 谈到这种方法的合法性。另一个要讨论的问题是关于方法的实用性,您需要考虑很多事情,例如:

  1. 代码的可测试性——Singleton 不受欢迎的原因之一
  2. 多线程应用程序中的可用性 - 当对象在多线程上下文中发生变化时,需要许多保护措施。

可能还有很多其他的;尽管其中一些(如果不是全部)也适用于 non-Singleton 个对象。