设计模式-单例模式(静态常量饿汉式)
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)结论:这种单实例模式可用,但是可能造成内存浪费

浙公网安备 33010602011771号