• 单例模式


    其实工作中一直在使用单例模式但是一直没留意过,有空简单总结一下。

    单例模式的要点有三个:

      1、是某个类只能有一个实例。

      2、是它必须自行创建这个实例。

      3、是它必须自行向整个系统提供这个实例。

    从具体实现角度来说,就是以下三点:

      1、是单例模式的类只提供私有的构造函数。

      2、是类定义中含有一个该类的静态私有对象。

      3、是该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象。

    举例代码实现:

    最简单直接的单例

    public class Singleton
    {
        private static Singleton instance;
     
        /// <summary>
        /// 构造方法私有,外键不能通过New类实例化此类
        /// </summary>
        private Singleton()
        {
        }
    
        /// <summary>
        /// 此方法是本类实例的唯一全局访问点
        /// </summary>
        /// <returns></returns>
        public static Singleton GetInstance()
        {
            //如实例不存在,则New一个新实例,否则返回已有实例
            if (instance == null)
            {
                instance = new Singleton();
            }
            return instance;
        }
    }

    多线程安全

    public class Singleton
    {
        private static Singleton instance;
     
        /// <summary>
        /// 程序运行时,创建一个静态只读的进程辅助对象
        /// </summary>
        private static readonly object _object = new object();
     
        /// <summary>
        /// 构造方法私有,外键不能通过New类实例化此类
        /// </summary>
        private Singleton()
        {
        }
        /// <summary>
        /// 此方法是本类实例的唯一全局访问点
        /// (双重加锁 Double-Check Locking)
        /// </summary>
        /// <returns></returns>
        public static Singleton GetInstance()
        {
            //先判断实例是否存在,不存在再加锁处理
            if (instance == null)
            {
                //在同一时刻加了锁的那部分程序只有一个线程可以进入,
                lock (_object)
                {
                    //如实例不存在,则New一个新实例,否则返回已有实例
                    if (instance == null)
                    {
                        instance = new Singleton();
                    }
                }
            }
            return instance;
        }
    }
  • 相关阅读:
    查询数据库版本
    Appscan的安装破解以及使用
    jmeter接口性能测试【CSV文件读取+接口关联+设置集合点】
    常用命令记录
    jmeter接口自动化-通过csv文件读取用例并执行测试
    js函数
    js数据类型及方法
    初识js(第一篇)
    一个人记笔记多没意思啊,拿出来分享一下咯
    博客园设置访问数量统计-小试牛刀
  • 原文地址:https://www.cnblogs.com/flywing/p/8434316.html
Copyright © 2020-2023  润新知