单例模式
设计模式
定义:设计模式是一套被反复使用、多人知晓的、经过分类编目的、代码设计经验的总结。
目的:为了可重用代码、使代码更容易的被他们理解、保证代码的可靠性。
单例模式
作用:保证应用程序中某个实例有且只有一个
应用场合:有些对象只要一个就够了
分为懒汉式和饿汉式:
区别:懒汉式是在加载类时就创建了实例,线程安全
饿汉式是在运行时创建实例,线程不安全
示例:
1 //饿汉式 2 public class Singleton { 3 4 //1、将构造方法私有化,不允许外部直接创建对象 5 private Singleton() { 6 7 } 8 9 //2、创建类的唯一实例,用private static修饰 10 private static Singleton instance = new Singleton(); 11 12 //3、提供一个用于获取实例的方法,用public static修饰 13 public static Singleton getInstance() { 14 return instance; 15 } 16 }
//懒汉式 public class Singleton2 { //1、将构造方法私有化,不允许外部直接创建对象 private Singleton2() { } //2、声明一个类的实例,用private static修饰 private static Singleton2 instance; //3、提供一个用于获取实例的方法,用public static修饰 public static Singleton2 getSingleton2() { if (instance == null) { instance = new Singleton2(); } return instance; } }
public class Test { public static void main(String[] args) { //测试是否是一个实例 Singleton s1 = Singleton.getInstance(); Singleton s2 = Singleton.getInstance(); if (s1 == s2) { System.out.println("是同一个实例"); }else { System.out.println("不是同一个实例"); } Singleton2 s3 = Singleton2.getSingleton2(); Singleton2 s4 = Singleton2.getSingleton2(); if (s3 == s4) { System.out.println("是同一个实例"); }else { System.out.println("不是同一个实例"); } } }

浙公网安备 33010602011771号