单例模式中的饿汉模式和懒汉模式一看就懂
Posted xyida
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例模式中的饿汉模式和懒汉模式一看就懂相关的知识,希望对你有一定的参考价值。
以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字段~
以上是关于单例模式中的饿汉模式和懒汉模式一看就懂的主要内容,如果未能解决你的问题,请参考以下文章