码迷,mamicode.com
首页 > 其他好文 > 详细

单例模式中的饿汉模式和懒汉模式【一看就懂】

时间:2019-12-27 11:28:22      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:nbsp   懒汉模式   懒汉   rtu   static   函数   new   alc   virtual   

以Java为例:

饿汉:

public final class VirtualCore {
private static VirtualCore gCore = new VirtualCore();

    private VirtualCore() {

    }
    public static VirtualCore get() {
        return gCore;
    }
}

懒汉:

public final class VirtualCore {
private static VirtualCore gCore = null;

    private VirtualCore() {

    }
    public static synchronized VirtualCore get() {
        if(gCore == null){
            gCore = new VirtualCore();
        }
        return gCore;
    }
}

先来看单例模式原理及要求,保证这个类在内存中只有一个对象,那么就不能随便给别人new,所以必须把构造函数改为private,然后整一个公共静态方法供外部统一获取实例。

 

再来看饿汉以及懒汉定义(原理)以及区别:

饿汉:一开始就吧吃的找好(对象new出来),随时可以吃

懒汉:懒得动,饿了(有需要)再去找吃的(new 对象)

 

两者区别在于,饿汉模式拿空间换时间,一开始就把对象生成,在内存中占着,懒汉则是按需生成。注意的是,多线程访问的时候,

懒汉可能会因为不同步创建多个对象,所以获取单例的方法加上 synchronized字段~

单例模式中的饿汉模式和懒汉模式【一看就懂】

标签:nbsp   懒汉模式   懒汉   rtu   static   函数   new   alc   virtual   

原文地址:https://www.cnblogs.com/xyida/p/12106132.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!