zoukankan      html  css  js  c++  java
  • 个人理解的单例模式

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

    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();
            }
    
        }
    }

    欢迎交流

  • 相关阅读:
    简单函数调用分析
    从函数层面看栈溢出
    C语言漏洞基础(一)
    C语言函数篇(一)
    开发一种填表机器
    阿米洛varmilo键盘
    Flops
    助力高校计算机教育 —— 码云为老师推出免费高校版
    Numerical Methods LetThereBeMath
    Git Cookbook
  • 原文地址:https://www.cnblogs.com/huchaoheng/p/3774852.html
Copyright © 2011-2022 走看看