Day08_SHJavaTraing_4-13-2017
单例设计模式
1.饿汉式单例设计模式
1 /* 2 饿汉式单例设计模式 3 */ 4 class HurrySingletonDemo 5 { 6 //1.私有化构造函数,阻止外部直接实例化本类对象 7 private HurrySingletonDemo(){ 8 9 } 10 //2.在本类中创建唯一实例 11 private static HurrySingletonDemo hsd = new HurrySingletonDemo(); 12 //3.对外提供公开的访问方法,获取这个唯一实例 13 public static HurrySingletonDemo getInstance(){ 14 return hsd; 15 } 16 }
2.懒汉式单例设计模式
1 /* 2 懒汉式单例设计模式 3 */ 4 class LazySingletonDemo 5 { 6 //1.私有化构造函数 7 private LazySingletonDemo(){ 8 9 } 10 11 //2.声明本类的一个对象 12 private static LazySingletonDemo lsd;//不用给lsd赋初始值,因为引用类型数据的默认值为null 13 14 //3.对外提供公开的访问方法 15 public static LazySingletonDemo getInstance(){ 16 17 if(lsd == null){ //第一次调用lsd时才创建对象(此时lsd为null) 18 lsd = new LazySingletonDemo();//创建唯一的实例 19 } 20 21 return lsd; 22 } 23 }
3.饿汉式单例设计模式和懒汉式单例设计模式对比
3.1饿汉式:在加载类的同时就创建了这个类的唯一实例
①好处:可保证这个类的实例的唯一性
②弊端:如果只是使用这个类,但是暂时不需要它的对象,也会创建唯一实例,造成内存的浪费
3.2懒汉式:在第一次调用获取实例的方法时才创建对象
①好处:第一次调用获取实例的方法时才创建对象,可以避免内存的浪费
②弊端:多线程环境下不能保证实例的唯一性