Java设计模式之单例设计模式

一、饿汉式单例


/*
* 单例模式
* */

/*
* 饿汉式单例模式
* */
class Singleton{

    /*
    * 声明私有静态成员变量singleton。
    * */
    private static Singleton singleton = new Singleton();

    /*
    * 私有构造器。
    * */
    private Singleton(){}
    
    /*
    * 静态方法
    * 返回私有成员变量singleton.
    * */
    public static Singleton getInstance(){
        return singleton;
    }
}

单例即一个类只有唯一一个实例,可以看到我们通过对无参构造器私有化来实现这一点。因为现在的对象已经无法通过new关键字在外部实例化这个类了,我们又定义了私有静态的Singleton 类型的成员变量singleton来引用一个内部new出来的Singleton对象,然后通过一个静态公共方法getInstance()使外部可以获取到内部唯一的Singleton对象。

在饿汉式单例模式中,Singleton类被初始化时就已经实例化了单例对象。

private static Singleton singleton = new Singleton();

 

二、懒汉式单例

/*
* 懒汉式单例模式
* */
class Singleton{

    /*
    * 声明私有静态成员变量singleton。
    * */
    private static Singleton singleton;

    /*
    * 私有构造器。
    * */
    private Singleton(){}

    /*
    * 静态方法
    * 返回私有成员变量singleton.
    * */
    public static Singleton getInstance(){
        if(singleton != null){
            return singleton;
        }else{
            return new Singleton();
        }
    }
}

对照前面饿汉式单例模式,懒汉式单例模式在类初始化时并没有实例化单例对象,而是在调用获取单例对象的静态公共方法时主动创建或返回一个唯一的单例对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值