模式定义
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
下载示例