设计模式——单例模式

 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 }

执行结果:

原文地址:https://www.cnblogs.com/rsdqc/p/5388961.html