回顾设计模式(一):单例模式

单例模式

顾名思义,该对象在jvm虚拟机中只会存在一个实例。

该设计模式旨在减少多余实力对象对内存的占用,减少GC回收内存产生的性能消耗

单例模式的实现方式简而言之就是私有化构造方法,使用静态方法提供实例。

log4j

Spring的bean默认也是单例创建的

代码:

饿汉式:

public class Lover{

    private static Lover lover = new Lover();

    private Lover(){}

    public static Lover getInstance(){

           return lover;      

    }

}

懒汉式:

public class Lover{

    private static Lover lover = null;

    private Lover(){}

    public static Lover getInstance(){

         if(null == lover){

           return new lover();      

          }

         return lover;

    }

}

线程安全的单例模式:

public class Lover{

    private static Lover lover = null;

    private Lover(){}

    public static Lover getInstance(){

        if(null == lover){

              synchronized(this){

                    if(null == lover){

                        return new Lover();

                    }

            }

        }

        return lover;

    }

}

《java并发编程实战》中推荐的单例模式实现方式:

public class Lover(){

    private static class LoverCreater{

        final static instance = new Lover();

    }

     public static Lover getInstance(){

         return LoverCreater.instance;

    }

}

猜你喜欢

转载自blog.csdn.net/yangzan0816/article/details/81051570