单例设计模式 (代码实现)

 

  ---单例设计模式之饿汉式---

 

  创建SingleInstance类

 1 /**
 2  * 单例设计模式之饿汉式
 3  */
 4 public class SingleInstance {    
 5     /**
 6      * 私有化构造方法
 7      */
 8     private SingleInstance() {}
 9     /**
10      * 成员变量
11      */
12     private static SingleInstance instance = new SingleInstance() ;
13     /**
14      * 提供一个静态的成员方法,返回该对象
15      */
16     public static SingleInstance getInstance() {
17         return instance ;
18     }
19 }

 

  创建测试类SingleInstanceDemo

 

 1 /**
 2  * 单例设计模式的思想:    保证该类在内存中只有一个实例(对象)
 3  * 优点节省内存,提高内存利用率
 4  */
 5 public class SingleInstanceDemo {
 6     
 7     public static void main(String[] args) {
 8         
 9         // 调用方法获取对象
10         SingleInstance instance1 = SingleInstance.getInstance() ;
11         SingleInstance instance2 = SingleInstance.getInstance() ;
12         
13         // 输出
14         System.out.println(instance1 == instance2);
15     }
16 }

 

 

-------------------------------------------------------------------------------------------------------------

 

  ---单例设计模式之懒汉式---

 

  创建SingleInstance2

 1 /**
 2  * 单例设计模式之懒汉式
 3  * 
 4  * 面试中写那种单例设计模式呢?
 5  *         面试中写懒汉式:    因为懒汉式体现了两种思想, 第一种线程问题 , 第二种 延迟加载
 6  * 
 7  *    开发中写饿汉式
 8  */
 9 public class SingleInstance2 {
10     /**
11      * 私有化构造方法
12      */
13     private SingleInstance2() {}
14     /**
15      * 提供一个成员变量
16      */
17     private static SingleInstance2 instance = null ;
18     /**
19      * 提供一个静态的成员方法
20      */
21     public static synchronized SingleInstance2 getInstance() {
22     
23         if(instance == null){
24             instance = new SingleInstance2() ;
25         }
26         return instance ;
27     }
28 }

 

  创建测试类SingleInstanceDemo2

 

 1 public class SingleInstance2Demo {
 2     
 3     public static void main(String[] args) {
 4         
 5         // 获取对象
 6         SingleInstance2 instance1 = SingleInstance2.getInstance() ;
 7         SingleInstance2 instance2 = SingleInstance2.getInstance() ;
 8         
 9         // 比较
10         System.out.println(instance1 == instance2);
11         
12     }
13 
14 }

 

你可能感兴趣的:(单例设计模式 (代码实现))