美文网首页
2018-07-27

2018-07-27

作者: hero万人王 | 来源:发表于2018-07-27 15:56 被阅读0次

    设计模式——单例模式

    定义:单例模式的类只允许存在一个该类的实例

    实现思路 

    1将该类的构造方法私有化,避免其他类调用其构造方法

    2提供一个静态方法getInstance(),当调用getInstance时,判断该类实例是否存在。该类实例存在空则返回该实例,若不存在则创建一个实例并返回。

    注意事项:多线程情况

    饿汉式代码:

    public class  Singleton{

      private  Singleton(){};

      private final static  Singleton  SINGLETON = new Singleton();

     //类装载时就完成了实例创建,避免了多线程的问题,但是也一直占用着内存。

      public static Singleton getInstance(){

                         return SINGLETON;

                  }

    }

    懒汉式代码

    public Singleton {

    private static Singleton(){}

    private  Singleton  singleton ;

    public static getInstance(){

    if(singleton==null){  singleton= new Singleton();}  //  多线程下不能够保证只产生一个实例

    return singleton;}

    }

    双重检查法代码

    public Singleton {

    private Singleton (){}

    private static volitel Singleton singleton =null;

    public static Singleton getIstance(){

    if(singleton==null){

    synchronized(Singleton.class){

    if(singleton==null) singleton=new Singleton();

    }}return singleton;

    }} // 只有singleton==null的情况才启用同步方法。提高了效率。

    相关文章

      网友评论

          本文标题:2018-07-27

          本文链接:https://www.haomeiwen.com/subject/xycgmftx.html