模式定义
Singleton模式定义了个一个类只有一个实例,无论调用的方法来自何方。这个类实例具有全局变量的性质。
使用范围
- 系统需要某个类必须只有一个实例
- 系统需要某个类必须一次性的初始化某个过程
使用方法
public class MySingleton {
private static MySingleton s = new MySingleton();
private int i = 0;
private MySingleton() {
//...
}
public static MySingleton getInstance() {
return s;
}
public void add() {
i++;
}
public int getValue() {
return i;
}
}
或者也可以用Lazy Initialization(初始化延迟)的方法定义实例变量。
public class YourSingleton {
private static YourSingleton s = null;
private YourSingleton() {
//...
}
public static synchronized YourSingleton getInstance() {
if (s == null) {
s = new YourSingleton();
}
return s;
}
}
客户端方法:
public class Client {
public static void main(String args[]) {
MySingleton ms1 = MySingleton.getInstance();
ms1.add();
MySingleton ms2 = MySingleton.getInstance();
System.out.println("ms1:=" + ms1.getValue());
System.out.println("ms2:=" + ms2.getValue());
}
}
因为MySingleton.getInstance()只返回同一个相同的实例,因此无论ms1改变该实例的对象,ms2始终保持一致性。运行结果:
ms1:=1 ms2:=1
下载示例
本文详细介绍了单例模式的概念及其在Java中的实现方式。探讨了单例模式的应用场景,包括确保类只有一个实例的情况,并通过示例代码展示了如何创建单例对象以及如何在客户端代码中使用这些对象。
527

被折叠的 条评论
为什么被折叠?



