设计模式-单例模式(静态常量饿汉式)

 1 /**
 2  * 单例模式-静态常量饿汉式
 3  */
 4 public class SingletonTest01 {
 5     public static void main(String[] args) {
 6         Singleton instanceOne = Singleton.getInstance();
 7         Singleton instanceTwo = Singleton.getInstance();
 8         // out: true
 9         System.out.println(instanceOne == instanceTwo);
10     }
11 }
12 
13 //饿汉式(静态常量)
14 class Singleton {
15 
16     /**
17      * 1.构造器初始化,外部不能new
18      */
19     private Singleton() {
20 
21     }
22 
23     /**
24      * 2.本类内部创建对象实例
25      */
26     private final static Singleton instance = new Singleton();
27 
28     /**
29      * 3.提供一个公有的静态方法,返回实例对象。
30      */
31     public static Singleton getInstance() {
32         return instance;
33     }
34 
35 }

 

饿汉式(静态常量)

优缺点说明:

1)优点:这种写法比较简单,就是在类装载的时候就完成实例化。避免了线程同步问题

2)缺点: 在类装载的时候就完成实例化,没有达到Lazy Loading的效果,如果从开始到 结束都没使用过这个实力,则会造成内存的浪费。

3)这种方式给予classloder机制避免了多线程的同步问题。不过,instance在类装载时实例化,在单例模式中大多数都是调用getInstance方法,但是导致类装载的原因有很多种,因此不能确定有其他的方式导致类装载,这时候初始化instance就没有达到Lazy loading的效果。

4)结论:这种单实例模式可用,但是可能造成内存浪费

posted @ 2020-10-30 22:47  树树树  阅读(209)  评论(0)    收藏  举报