1.单例模式之饿汉式

单例模式总结:

特点:构造方法私有,提供一个全局访问点。

实现方式:有很多,分四篇分别总结1.饿汉式 2.懒汉式 3.注册式 4.ThreadLocal

优点:内存中只有一个实例,减少内存开销;避免对资源多重占用;设置全局访问点,严格控制访问。

缺点:没有接口,扩展困难;如果要扩展单例对象,只有修改代码,没有其他途径,不符合程序的开闭原则。


饿汉式比较简单,下面为两种饿汉式单例实现方式:

第一种:普通写法

package com.going.design.singleton.hungry;

/**
 * Created by renxf on 2021/1/2
 */
public class HungrySingleton {

    public static final HungrySingleton hungrySingleton = new HungrySingleton();

    private HungrySingleton(){};

    public static HungrySingleton getInstance(){
        return hungrySingleton;
    }

}

第二种:使用静态代码块

package com.going.design.singleton.hungry;

/**
 * Created by renxf on 2021/1/2
 * des:进一步优化
 */
public class HungryStaticSingleton {
    public static final HungryStaticSingleton hungrySingleton;//final 防反射攻击

    static {
        hungrySingleton = new HungryStaticSingleton();
    }
    private HungryStaticSingleton(){};

    public static HungryStaticSingleton getInstance(){
        return hungrySingleton;
    }
}

总结:

final:防止反射破坏单例

饿汉式缺点:可能会造成内存空间的浪费

你可能感兴趣的:(java设计模式,设计模式,单例模式)