单例模式-静态代码块饿汉式

 1 /**
 2  * 单例模式-静态代码块饿汉式
 3  */
 4 public class SingletonTest02 {
 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      */
27     private static Singleton instance;
28 
29     static {
30         instance = new Singleton();
31     }
32 
33     /**
34      * 3.提供一个公有的静态方法,返回实例对象。
35      */
36     public static Singleton getInstance() {
37         return instance;
38     }
39 
40 }

饿汉式(静态代码块)

优缺点说明:

1 )这种方式和静态常量汉饿式方式类似,只不过将类实例化的过程放在了静态代码块中,也是在类装载的时候,就执行静态代码块中的代码,初始化类的实例。优缺点和静态常量汉饿式一样。

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

posted @ 2020-10-30 23:02  树树树  阅读(323)  评论(0)    收藏  举报