我可以在java中的singleton类中添加一个额外的公共方法吗



我有一个singleton类,我添加了msg方法,但我不确定是否可以将其添加到singleton类中

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 是一个创造性设计模式,它确保只有一个同类对象存在,并为任何其他代码提供对它的单一访问点。除此之外,它只是一个普通的类,可以拥有满足其设计要求所需的任意多的公共方法。

Singleton对象可以发生变化(更改其内部属性-变量的值(,也可以是不可变的(例如,Javaenums可以用于创建Singleton实例(。

以你的类为例,你可以做这样的事情,并且完全合法:

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. 多线程应用程序中的可用性-当对象在多线程上下文中发生变化时,需要许多保护措施

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

最新更新