/** * 单例设计模式 * 应用场合:有些对象只需要一个就足够了 * 作用:保证整个应用程序中某个实例有且只有一个 * 类型:饿汉模式、懒汉模式 * 二、单例模式之懒汉模式 */ public class Singleton2 { //1.将构造方法私有化,不允许外部直接创建对象 private Singleton2() { } //2.创建类的唯一实例 不去实例化 private static Singleton2 instance; //3.提供一个用于获取实例的方法---懒汉模式 public static Singleton2 getInstance() { if (instance == null){//先判断实例是否为空,是则创建实例 instance = new Singleton2(); } return instance; } }
--------------------------
public class Test { public static void main(String[] args) { Singleton s3 = Singleton.getInstance(); Singleton s4 = Singleton.getInstance(); if (s3 == s4) { System.out.println("s3和s4是同一个实例"); } else { System.out.println("s3和s4不是同一个实例"); } } }
----------------------------------------------------
饿汉模式与懒汉模式区别: * 饿汉模式:加载类时比较慢,但运行时获取对象的速度比较快(原因:类加载时,就实例化对象),线程安全的 * 懒汉模式:加载类时比较快,但在运行时获取对象的速度较慢(原因:类加载时,不实例化对象,只在第一次调用时实例化对象)线程不安全的