单例模式的创建方法

    技术2025-08-10  11

    单例模式的创建方法 1.懒汉模式

    package com.example.demo; /** * Created by Administrator on 2020/7/4. * 单例模式之懒汉模式 */ public class SingletonDemo { private SingletonDemo singletonDemo=null; private SingletonDemo() { } public static SingletonDemo getInstance() { if (singletonDemo == null) { singletonDemo = new SingletonDemo(); } return singletonDemo; } }

    懒汉模式在需要时才进行创建,如果有则返回,没有则新建。有线程安全和线程不安全两种写法,区别就是synchronized关键字。 2.饿汉模式

    package com.example.demo; /** * Created by Administrator on 2020/7/4. * 单例模式之饿汉模式 */ public class SingletonDemo { private static SingletonDemo singletonDemo=new SingletonDemo(); private SingletonDemo() { } public static SingletonDemo getInstance() { return singletonDemo; } }

    饿汉模式在实例化是就已经创建好。好处是没有线程安全的问题,坏处是浪费内存空间。 这是单例模式最经典的两种创建方法,还有其他的两种创建方式,分别为: 3.双捡锁模式

    package com.example.demo; /** * Created by Administrator on 2020/7/4. * 单例模式之双捡锁模式 */ public class SingletonDemo { private static SingletonDemo singletonDemo==null; private SingletonDemo() { } public static SingletonDemo getInstance() { if (singletonDemo == null) { synchronized (SingletonDemo.class){ if (singletonDemo == null) { singletonDemo = new SingletonDemo(); } } } return singletonDemo; } }

    4.静态内部类模式

    package com.example.demo; /** * Created by Administrator on 2020/7/4. * 单例模式之静态内部类模式 */ public class SingletonDemo { private static class SingletonStaticDemo { private static final SingletonDemo Instance = new SingletonDemo(); } private SingletonDemo() { } public static final SingletonDemo getInstance() { return SingletonStaticDemo.Instance; } }
    Processed: 0.010, SQL: 9