• 个人理解的单例模式


    下面是个人理解的单例模式:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication6
    {
      public  sealed class Singleton
        {
          static Singleton instance;
          /// <summary>
          /// 为了避免实例不唯一,构造方法私有化
          /// </summary>
          private Singleton() { }
          public static Singleton Instance 
          {
              get 
              {
                  return instance == null ? new Singleton() : instance;
              }
          }
          public void dd(){
              Console.WriteLine("fdd");
              Console.ReadLine();
          }
         
        }
    }

    主方法调用如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication6
    {
        class Program
        {
            static void Main(string[] args)
            {
                Singleton.Instance.dd();
              
                
            }
        }
    }

    当然这有时候不能保证单例唯一,可以用lock方法来实现如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication6
    {
        public sealed class Singleton
        {
            static Singleton instance;
            static readonly object padlock = new object();
          
            public Singleton() { }
            public static Singleton Instance
            {
    
                get
                {
                    if (instance == null)
                    {
                        lock (padlock)
                        {
                            if (instance == null) 
                            {
                                instance=new Singleton() ;
                            }
                            
                        }
                       
                    }
                    return instance;
                }
            }
            public void dd()
            {
                Console.WriteLine("fdd");
                Console.ReadLine();
            }
    
        }
    }

    欢迎交流

  • 相关阅读:
    do while 后面要加分号,你大爷的
    ATS push cache 测试
    ATS (apache traffic server) http_ui 设置与使用
    chrome 开发者工具使用一例
    beautiful soup 遇到class标签的值中含有空格的处理
    virtualbox sharefolder mount fail
    从wait角度调优
    Service Broker入门
    数据库建立初步
    只读账号设置-db_datareader
  • 原文地址:https://www.cnblogs.com/huchaoheng/p/3774852.html
Copyright © 2020-2023  润新知