Java设计模式--单例设计模式

单例对象:保证内存中只存在一个对象, 保证对象的唯一性。

1) 禁止其他程序通过构造函数创建该类对象。

2) 只允许其他程序通过该类中的定义方法来实例化对象。

实现:

1) 在类中创建该类的私有静态的对象。

2) 将构造函数私有化。

3) 提供一个静态方法来获取该对象。

饿汉式设计模式:

 1 /**
 2  * 饿汉式设计模式
 3  *
 4  * @author Wáng Chéng Dá
 5  * @create 2017-02-21 8:30
 6  */
 7 public class HungryMan {
 8 
 9     //在饿汉式设计模式中, 初始化变量的时候最好加上 final 关键字, 这样比较严谨。
10     private final static HungryMan hungryMan = new HungryMan();
11 
12     private HungryMan() {
13 
14     }
15 
16     public static HungryMan getHungryMan() {
17         return hungryMan;
18     }
19 }

懒汉式设计模式:

 1 /**
 2  * 懒汉式设计模式
 3  *
 4  * @author Wáng Chéng Dá
 5  * @create 2017-02-21 8:37
 6  */
 7 public class LazyMan {
 8 
 9     private static LazyMan lazyMan = null;
10 
11     private LazyMan() {
12 
13     }
14 
15     /**
16      * 考虑并发情况
17      * 但是每次都需要判断锁, 影响程序加载的效率, 应尽量减少判断锁的次数,
18      * 提高程序的运行效率, 所以在锁外层又加了一层判断。
19      */
20     public static LazyMan getBiLazyMan(){
21         if (lazyMan == null) {
22             synchronized (LazyMan.class) {
23                 if (lazyMan == null) {
24                     lazyMan = new LazyMan();
25                 }
26             }
27         }
28         return lazyMan;
29     }
30 
31     //不考虑并发情况
32     public static LazyMan getLazyMan(){
33         if (lazyMan == null) {
34             lazyMan = new LazyMan();
35         }
36         return lazyMan;
37     }
38 }

饿汉式设计模式和懒汉式设计模式的区别:

饿汉式设计模式:程序只要开始, 就将对象实例化, 用到的时候就省去了再实例的时间, 所以速度和反应快。

懒汉式设计模式:只有用到对象的时候才会将对象实例化,不会浪费,所以效率要高一些。

原文地址:https://www.cnblogs.com/chinda/p/6422426.html