二十三中设计模式之:单例模式

单例模式通常用于保证系统中一个类只有一个单例。

单例模式分为三种:懒汉式、饿汉式、双重锁模式

例1:懒汉式(会产生线程安全问题,需要使用synchronized关键字进行加锁,只有在使用单例模式的时候,实例对象才会被创建)

public class Singleton{

  //1.构造方法私有化

  private Singleton(){

  }

    //2.声明私有化实例

  private static Singleton singleton = null;

  //3.提供对外的公开的方法

  public synchronized static Singleton getSingleton(){

    if(singleton==null){

      singleton = new Singleton();

      //return singleton;

    }

    return singleton;

  }

}

例2:饿汉式(不会产生线程安全问题,但是在程序启动或单例模式类被加载的时候,实例对象就已经被创建。)

  public class Singleton{

    //1.构造方法私有化

    priavte Singleton(){ 

    }

    //2.声明类的实例

    private static Singleton singleton = new Singleton();

    //3.创建公开的方法

    public static Singleton getSingleton(){

      return singleton;

    }    

  }

例3:双重锁模式

  public class Singleton {

    //1.构造方法私有化

    private Singleton(){

    }

    //2.声明类的实例

    private static Singleton singleton = null;

    //3.创建公开的方法

    public static Singleton getSingleton(){

      synchronized(Singleton.class){

        if(singleton==null){

          singleton = new Singleton();

        }

      }

    return singleton;

    }

  }

 

 

懒汉式和饿汉式的使用场景:当经常使用单例模式的时候,使用饿汉式;不经常使用的时候使用懒汉式。

posted on 2016-07-01 09:38  vbvb520  阅读(170)  评论(0编辑  收藏  举报

导航