作为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; } }
该线程对象不可改变 所以线程是安全的,且类加载的时候对象就已经存在。
应用场景:在某个对象需要被共享使用的时候,可以使用该模式来节省内存,比如最常见的数据库连接,上下文等等。