• Offer_2:实现Singleton模式


    题目

    设计一个类,我们只能生成该类的一个实例。

    解题分析

    单例模式的特点:

    • 由于要求只能生成一个实例,因此必须私有化构造函数,以禁止手动 new 创建实例
    • 单例模式要求提供统一入口获取唯一实例
    • 单例模式必须保证多线程下的安全性

    代码

    单例模式的代码有好几种写法,这里只提供几种最优方法。。。

    利用静态内部类实现按需创建实例

    public class Singleton {
    
        private Singleton() {
        }
        
        public static Singleton getInstance() {
            return SingletonHolder.instance;
        }
    
        private static class SingletonHolder {
            private final static Singleton5 instance = new Singleton5();
        }
    }
    

    加锁前后两次判断实例是否已经存在

    public class Singleton {
    
        private static Singleton instance = null;
    
        private Singleton() {
        }
    
        public static Singleton getInstance() {
            if(instance == null){
                synchronized (Singleton.class){
                    if (instance == null) {
                        instance = new Singleton();
                    }
                }
            }
            return instance;
        }
    }
    

    利用枚举实现单例

    public enum Singleton {
        INSTANCE;
    
        public Singleton getInstance() {
            return INSTANCE;
        }
    }
    
  • 相关阅读:
    Loadrunner初学
    loadrunner安装
    性能测试基础知识
    编程语言的基本套路
    Axure RP初学
    网络分层
    网络软件的组成
    C#MVC的基础知识
    xml的基本认识
    添加ASPCMS模板的步骤
  • 原文地址:https://www.cnblogs.com/dtdx/p/13709287.html
Copyright © 2020-2023  润新知