zoukankan      html  css  js  c++  java
  • 设计模式-单例模式

    单例模式是为了保证系统中只有一个实例

    1.私有构造函数

    2. 声明静态单例对象

    3. 构造单例对象之前要加锁

    4. 需要两次检测单例实例是否已经构造出,分别在锁前和锁后(可能延迟加载或者缓存原因造成构造多个实例)

    public class Singleton {  
        private Singleton() {}                     //关键点0:构造函数是私有的
        private static Singleton single = null;    //关键点1:声明单例对象是静态的
        private static object obj= new object();
        public static Singleton GetInstance()      //通过静态方法来构造对象
        {                        
             if (single == null)                   //关键点2:判断单例对象是否已经被构造
             {                             
                lock(obj)                          //关键点3:加线程锁
                {
                   if(single == null)              //关键点4:二次判断单例是否已经被构造
                   {
                      single = new Singleton();  
                    }
                 }
             }    
            return single;  
        }  
    }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         

  • 相关阅读:
    小程序对于华为Oppo的canvas二维码渲染数据量大
    SonarQube代码质量管理工具的升级(sonarqube6.2 + sonar-scanner-2.8 + MySQL5.6+)
    SonarQube代码质量管理工具安装与使用(sonarqube5.1.2 + sonar-runner-dist-2.4 + MySQL5.x)
    在try-catch机制优化IO流关闭时,OutputStreamWriter 数据流被截断
    Java中日期格式化SimpleDateFormat类包含时区的处理方法
    彻底删除mysql服务(清理注册表)
    PHP7新特性的介绍
    RESTful架构详解
    php-config 介绍
    用 phpize 编译共享 PECL 扩展库
  • 原文地址:https://www.cnblogs.com/zhaodun/p/7141698.html
Copyright © 2011-2022 走看看