zoukankan      html  css  js  c++  java
  • 1.单件模式(Singleton Pattern)

    意图:为了保证一个类仅有一个实例,并提供一个访问它的全局访问点。

    1.简单实现(多线程有可能产生多个实例)

        public class CommonSigleton
        {    
            /// <summary>
            /// 私有的对象
            /// </summary>
            private static CommonSigleton instance;
            
            /// <summary>
            /// 构造方法为Private
            /// </summary>
            private CommonSigleton()
            {
                
            }
            
            /// <summary>
            /// 公有的属性
            /// </summary>
            public static CommonSigleton Instance
            {
                get
                {
                    if(instance == null)
                    {
                        instance = new CommonSigleton();
                    }
    
                    return instance;
                }
            }
        }
    View Code

    2.双重锁定实现(lock关键字)

        public class DoubLockSigleton
        {    
            private static volatile DoubLockSigleton instance;
            
            /// <summary>
            /// 辅助锁对象,本身没有意义 
            /// </summary>
            private static object syncRoot = new Object();
    
            /// <summary>
            /// 构造方法改为Private
            /// </summary>
            private DoubLockSigleton()
            {
                
            }
    
            public static DoubLockSigleton Instance
            {
                get 
                {
                    if (instance == null) 
                    {
                        lock (syncRoot) 
                        {
                            if (instance == null) 
                                instance = new DoubLockSigleton();
                        }
                    }
    
                    return instance;
                }
            }
        }
    View Code

    3.利用C#特性实现

        ///该类标记sealed阻止发生派生增加实例
        public sealed class DotNetSigleton
        {
            //变量标记为 readonly,这意味着只能在静态初始化期间(此处显示的示例)或在类构造函数中分配变量。
            //公共静态属性为访问实例提供了一个全局访问点。此外,由于构造函数是私有的,因此不能在类本身以外实例化
            private static readonly DotNetSigleton instance = new DotNetSigleton();
    
            //由于 Singleton 实例被私有静态成员变量引用,因此在类首次被对Instance属性的调用所引用之前,不会发生实例化。
            private DotNetSigleton(){}
    
            public static DotNetSigleton Instance
            {
                get 
                {
                    return instance; 
                }
            }
        }
    View Code
  • 相关阅读:
    k8s 资源管理
    Kubernetes核心组件
    python复习
    项目发布
    tornado
    斯巴达系统(一)
    Tornado-第三篇-tornado支持websocket协议
    Tornado-第二篇-异步非阻塞
    Tornado-第一篇-搭建网页
    python--面向对象的特殊方法(反射,内置方法)
  • 原文地址:https://www.cnblogs.com/lgxlsm/p/4628636.html
Copyright © 2011-2022 走看看