设计
1.单例类只能有一个实例。
2.单例类必须自己创建自己的唯一实例。
3.单例类必须给所有其他对象提供这一实例。
意图
实现方式
双检锁/双重校验锁
public class SingleObject {//创建 SingleObject 的一个对象private volatile static SingleObject instance;//让构造函数为 private,这样该类就不会被实例化private SingleObject(){}//获取唯一可用的对象public static SingleObject getInstance(){if (instance == null) {synchronized (SingleObject.class) {if (instance == null) {instance = new SingleObject();}}}return instance;}public void showMessage(){System.out.println("Hello World!");}}
public class SingletonPatternDemo {public static void main(String[] args) {//不合法的构造函数//编译时错误:构造函数 SingleObject() 是不可见的//SingleObject object = new SingleObject();//获取唯一可用的对象SingleObject object = SingleObject.getInstance();//显示消息object.showMessage();}}
