概念:
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。
通过单例模式可以保证系统中一个类只有一个实例。
可以分为懒汉模式、饿汉模式。
特点:
1. 私有的构造函数,防止从外部构造对象。
2. 静态的私有变量存储对象。
3. 共开的获取对象的方法。
好处:
通过运用单例模式,我们可以避免重复构造对象,从而节省系统的内存资源消耗。
代码:
网上有人总结有7种写法,有兴趣的可以写写看,查查看。这里说几个有特点的
public class Singleton { private Singleton(){ } //懒汉模式 private static Singleton instance = null; public static synchronized Singleton getInstance(){ if(instance == null){ instance = new Singleton(); } return instance; } }
public class Singleton { private Singleton(){ } //饿汉模式 private static final Singleton instance = new Singleton(); public static Singleton getInstance(){ return instance; } }
public class Singleton { private Singleton(){ } //双重校验锁 private volatile static Singleton instance = null; public static Singleton getInstance(){ if(instance==null){ synchronized(Singleton.class){ if(instance == null){ instance = new Singleton(); } } } return instance; } }
public enum SingletonEnum { //枚举 instance; private SingletonEnum(){ } }
还有//静态块,//内部类实现的,本质还是懒汉、饿汉的变体!