singleton单例模式是java中最简单的设计模式之一。这种类型的设计模式属于创建模式,因为此模式提供了创建对象的最佳方法之一。
这种模式涉及一个类,他负责创建一个对象,同时确保只创建一个对象。这个类提供了一种方法来访问它的唯一对象,可以直接访问,而不需要实例化。
饿汉式:
public class SingleObject { private static SingleObject instance = new SingleObject(); private SingleObject(){} public static SingleObject getInstance(){ return instance; } public void showMessage(){ System.out.println("Hello World!"); } }
public class SingletonPatternDemo { public static void main(String[] args) { SingleObject object = SingleObject.getInstance(); object.showMessage(); } }
懒汉式:
public class SingleObject { // 静态实例变量 private static SingleObject instance; // 私有化构造函数 private SingleObject(){ } // 静态public方法,向整个应用提供单例获取方式 public static SingleObject getInstance(){ if (instance==null){ instance = new SingleObject(); } return instance; } public void showMessage(){ System.out.println("Hello World!"); } }
懒汉式的线程安全:
public class SingleObject { // 静态实例变量加上volatile private static volatile SingleObject instance; // 私有化构造函数 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!"); } }