设计模式——单例模式
1 package cn.xiaoxiong.threadDemo; 2 3 /** 4 * 单例模式 5 * @author user 6 * 7 */ 8 9 public class SingletonPattern { 10 11 public static void main(String[] args) { 12 //懒汉模式 13 SingletDemo01 sd1 = SingletDemo01.getInstance(); 14 SingletDemo01 sd2 = SingletDemo01.getInstance(); 15 SingletDemo01 sd3 = SingletDemo01.getInstance(); 16 SingletDemo01 sd4 = SingletDemo01.getInstance(); 17 System.out.println("**************************************"); 18 SingleDemo02 s1 = SingleDemo02.getInstance(); 19 SingleDemo02 s2 = SingleDemo02.getInstance(); 20 SingleDemo02 s3 = SingleDemo02.getInstance(); 21 SingleDemo02 s4 = SingleDemo02.getInstance(); 22 } 23 24 } 25 26 /** 27 * 单例模式:懒汉模式 28 * @author user 29 * 30 */ 31 class SingletDemo01{ 32 //饿汉式 33 //定义静态私有的对象,并实例化 34 private static SingletDemo01 sd1 = new SingletDemo01(); 35 36 //创建私有构造函数 37 private SingletDemo01(){ 38 System.out.println("调用构造函数(饿汉模式)"); 39 } 40 41 //创建公用静态方法对当前私有静态成员进行回调 42 public static SingletDemo01 getInstance(){ 43 44 return sd1; 45 } 46 47 } 48 49 50 class SingleDemo02{ 51 //懒汉式 52 //定义静态私有对象,但不实例化,当调用公用静态方法时实例化对象。 53 private static SingleDemo02 sd = null; 54 55 //创建私有化构造函数 56 private SingleDemo02(){ 57 System.out.println("调用构造函数(懒汉模式)"); 58 } 59 60 //创建公用静态方法,用于回调实例化对象 61 public static SingleDemo02 getInstance(){ 62 if(sd==null){ 63 sd = new SingleDemo02(); 64 } 65 return sd; 66 } 67 }
执行结果: