作为23种设计模式里最简单的设计模式之一,单例模式顾名思义该类只能有一个实例对象,普通的类都是可以直接new 类名()来创建。想要只有一个实例,那就只能由该例创建,如果该例对象已经存在,则无法再创建

单例模式分为懒汉模式和饿汉模式。懒汉模式是类加载的时候该实例还没有创建,需要手动调用方法创建。

public class LanhanDanli {
  private static LanhanDanli lanhanDanli=null;

    public LanhanDanli() {
    }
    private static LanhanDanli createLanhanDanli(){
        if(lanhanDanli==null){
            lanhanDanli=new LanhanhanDanli();
        }
        return lanhanhanDanli;
    }
}

如果编写的是多线程,需要对变量上锁保证线程安全。但是每次访问都要同步资源,非常浪费性能。

饿汉模式为类加载的时候 该类的实例就已经存在

public class EhanDanli {
    private static EhanDanli ehanDanli=new EhanDanli();

    public EhanDanli() {
    }
    private static  EhanDanli  getEhanDanli(){
        return ehanDanli;
    }
}

该线程对象不可改变 所以线程是安全的,且类加载的时候对象就已经存在。

应用场景:在某个对象需要被共享使用的时候,可以使用该模式来节省内存,比如最常见的数据库连接,上下文等等。

posted on 2020-04-26 15:24  Vinlen  阅读(114)  评论(0编辑  收藏  举报