zoukankan      html  css  js  c++  java
  • 单例模式中的饿汉模式和懒汉模式【一看就懂】

    以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字段~

  • 相关阅读:
    grep用法小结
    观察者模式
    类之间的关系
    Linux——makefile编写
    探索C++多态和实现机理
    进程间通信——管道
    C++继承引入的隐藏与重写
    Linux 文件读写操作与磁盘挂载
    xShell终端下中文乱码问题
    深入理解C++ new/delete, new []/delete[]动态内存管理
  • 原文地址:https://www.cnblogs.com/xyida/p/12106132.html
Copyright © 2011-2022 走看看