单例模式-饿汉式和懒汉式

来源:互联网 发布:我想学电脑编程 编辑:程序博客网 时间:2024/04/29 02:40
1 饿汉式public class EagerSingleton { private static final EagerSingleton m_instance = new EagerSingleton(); /** * 私有的默认构造子 */ private EagerSingleton() { } /** * 静态工厂方法 */ public static EagerSingleton getInstance() {return m_instance; }}2. 懒汉式public class LazySingleton { private static LazySingleton m_instance = null; /** * 私有的默认构造子,保证外界无法直接实例化 */ private LazySingleton() { } /** * 静态工厂方法,返还此类的惟一实例 */ synchronized public static LazySingleton getInstance() { if (m_instance == null) {m_instance = new LazySingleton(); } return m_instance; }

}

饿汉式单例:

在类一进内存时就已经建立好对象。

在程序运行时饿汉式比较安全,因为饿汉式在类一加载时就已经建立好对象,以后不会在改变了,而懒汉式在线程中如果没有synchronized时会导致创建多个对象。所以原则是推荐使用饿汉式。

懒汉式单例:

对象在方法被调用是才开始初始化,叫做对象的延时加载,在类进内存时,对象还没有加载,只有在被调用方法时才建立对象。

 

0 0
原创粉丝点击