Allen学习笔记—java设计模式之单例模式

1.单例模式分类:

  懒汉式单例、饿汉式单例、登记式单例(不常用)。

2.单例模式的特点:

  单例类只能有一个实例;

  单例类必须自己创建自己的唯一实例;

  单例类必须给所有其他对象提供这一实例;

3.单例模式示例代码:

 饿汉式

//在类初始化时,已经自行实例化   
public class Hungry {  
    private Hungry() {}  
    private static final Hungry hungry = new Hungry();  
    //静态工厂方法   
    public static Hungry getInstance() {  
        return hungry;  
    }  
}  

 懒汉式

//第一次调用方法时,才实例化对象 
public class Lazy { 
          private Lazy() {}
          private static Lazy lazy=null; 
//静态工厂方法
 public static Lazy getInstance(){
         if (lazy == null) { 
          lazy = new Lazy(); 
        } 
          return lazy; 
     } 
}

3.线程安全性

饿汉式:在类创建的同时就已经实例化好了一个静态的对象,所以是线程安全的。

懒汉式:创建对象过程中存在并发状况,所以是线程不安全;

    解决办法:1.在方法上加同步(synchronized);

                      2.双重检查锁定;

                      3.调用静态内部类的方法



猜你喜欢

转载自blog.csdn.net/hupu_allen/article/details/61660332