单例模式--饿汉式

单例模式--饿汉式

饿汉式单例模式

众所周知 单例模式 有很多种实现的方式。最为经典的就是懒汉式和饿汉式,今天就先简单整理一下饿汉式单例。

代码

public class HungrySingleton {
    //构造函数私有化
    private HungrySingleton(){};
    //全局访问点
    private static final HungrySingleton HUNGRY_SINGLETON = new HungrySingleton();
    public static  HungrySingleton getInstance(){
        return HUNGRY_SINGLETON;
    }
}

分析

单例模式:即一个类只有一个对象实例

如何保证每个类只有一个实例:构造函数私有化(不可通过构造函数来生成实例)
                       增加全局访问点,保证只可生成一个实例

优点:执行效率高,性能高,没有任何的锁
缺点:某些情况下,可能会造成内存浪费(类加载的时候直接初始化)

进阶

饿汉式有些进阶的写法:

public class HungaryStaticSingleton {
    //构造函数私有化

    private HungaryStaticSingleton(){};

    //全局访问点

    private static final HungaryStaticSingleton HUNGRY_SINGLETON;

    static {
        HUNGRY_SINGLETON = new HungaryStaticSingleton();
    }

    public static  HungaryStaticSingleton getInstance(){
        return HUNGRY_SINGLETON;
    }

}

分析:采用代码块的形式,在代码块中进行赋值(只是看上去有逼格)。这里涉及到一个类的加载顺序问题:

类加载顺序:先静态后动态;先上后下;先属性后方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值