• JAVA设计模式(一)——单例模式


      单例模式共分为三种方式、饿汉式、懒汉式、枚举方式等,每种方式都有各自的特点:

    方式 优点 缺点 是否推荐    使用场景
    饿汉式 无线程安全问题 可能造成内存浪费、无懒加载效应 推荐   源码Runtime类中使用了饿汉式
    懒汉式 懒加载 有线程安全问题 推荐    
    枚举方式 简单、无线程安全问题   推荐  

     

    饿汉式实现方式:

    //方式一  静态常量方式
    public class Singleton {
        // 构造方法私有化
        private Singleton() {
        }
        // 对象私有化
        private static final Singleton singleton  = new Singleton();
    
        public static Singleton getSingleton() {
            return singleton;
        }
    }
    
    //方式二 静态块方式
    class SingletonX {
        // 构造方法私有化
        private SingletonX() {
        }
        // 对象私有化
        private static SingletonX singleton ;
        static {
            singleton  = new SingletonX();
        }
        public static SingletonX getSingleton() {
            return singleton;
        }
    }

    懒汉式实现方式:

    // 静态内部类
    public class Singleton2 {
        // 构造方法私有化
        private Singleton2() {
        }
        // 通过静态类创建对象
        private static class SingletFactory {
            private static final Singleton2 INSTANCE = new Singleton2();
        }
    
        public static Singleton2 getSingleton() {
            return SingletFactory.INSTANCE;
        }
    }

    枚举方式:

    public enum Singleton3 {
        INSTANCE;
    }

      以上几种方式,都算是比较完美的,项目中可以正常使用,懒汉式采用静态内部类的方式解决了线程安全的问题以及懒加载等,还有其余几种懒汉式的方式,比如双重锁等方式,个人不推荐,最推荐的方式是使用枚举。

  • 相关阅读:
    Python 类的特性讲解
    Python 类的式列化过程解剖
    Python 面向对象介绍
    Python subprocess模块
    Python re模块
    Python configparser模块
    Python pyYAML模块
    Python logging模块
    Python hashlib模块
    OAuth2.0 错误码
  • 原文地址:https://www.cnblogs.com/zblwyj/p/13645709.html
Copyright © 2020-2023  润新知