首页 > 代码库 > 单例设计模式

单例设计模式

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.3、对外提供公开的访问方法,获取这个唯一实例
13     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     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懒汉式:在第一次调用获取实例的方法时才创建对象
        ①好处:第一次调用获取实例的方法时才创建对象,可以避免内存的浪费
        ②弊端:多线程环境下不能保证实例的唯一性

单例设计模式