CY的摸鱼——单例模式
单例模式(Singletion Pattern)是Java中最简单的设计模式之一。在枚举的内容中,我们可以让一个类产生固定个数的对象,如果进一步限制,一个类只允许产生唯一的一个对象,就实现了单例模式。
单例模式的目的在于避免频繁创建和消毁实例,减少内存消耗。
使用场景:
要求生产唯一的序列号。
计数器,不用没错刷新都在数据库中加一,用单例对象先缓存。
连接数据库对象。
实现步骤:
定义一个属性,保存当前类的静态对象(单例对象);
将构造方法私有;
创建一个静态get()方法返回这个单例对象;
模式可以分为:懒人模式,饿人模式
懒人模式:
创建实例的过程是在get()方法中,当需要单例对象时,调用get()方法才实例化。
优点:使用时候才创建实例,避免内存浪费;
缺点:线程不安全,无法保证绝对的单例。
PS:可以加线程锁解决,但是会降低执行效率。
饿人模式:
直接在属性中实例化,类加载的时候单例对象就准备好了。
优点:线程安全,执行效率高;
缺点:不需要的时候也会创建实例,内存浪费。
PS:枚举也可以实现单例模式,本质上就是饿人模式。
