Android设计模式之单例模式(singleton pattern)

饿汉式:

//只有内部类可以为static。
public class SingIn{
    //在自己内部定义自己的一个实例,只供内部调用
    private static final SingIn instance = new SingIn();
    private SingIn(){
    }
    //这里提供了一个供外部访问本class的静态方法,可以直接访问
    public static SingIn getInstance(){
        return instance;
    }
}

懒汉式:

/***
     * 一种常用的形式
     */
    private static SingIn instance = null; 
    public static synchronized SingIn getInstance() {         
      // 这个方法比上面有所改进,不用每次都进行生成对象,只是第一次  
      // 使用时生成实例,提高了效率!  
       if (instance == null)  
              instance = new SingIn();  
              return instance;  
    }

双重锁定:(这个一般在实际应用中用的比较多,以上,了解即可)

//将同步内容下方到if内部,提高了执行的效率,不必每次获取对象时都进行同步,只有第一次才同步,创建了以后就没必要了。
private static volatile SingIn instance=null;
 private SingIn (){

 }
 public static  SingIn getInstance(){
    if(instance==null){
      synchronized(SingIn .class){
      if(instance==null){
        instance=new SingIn ();
       }
      }
     }
    return instance;
  }

你可能感兴趣的:(Android设计模式之单例模式(singleton pattern))