using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 饿汉模式
{
    //单例模式(饿汉模式)
    public class SingleCase
    {
        //申明一个字段
        public string Name { get; set; }
        //1、创建一个私有的构造函数,证明不能实例化
        private SingleCase()
        {

        }
        //2、自行创建一个实例化
        private static SingleCase singleCase = new SingleCase();//饿汉模式
        //3、创建一个可访问的方法
        public static SingleCase GetInstence()
        {
            return singleCase;
        }
        public void Show()
        {
            Console.WriteLine("Hello:"+Name);
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 双重验证_多性能并发操作_
{
    public class SingleCase
    {
        //定义一个锁资源
        private static readonly object obj = new object();
        //1、创建一个私有的构造函数
        private SingleCase() { }
        //2、自行创建一个类的实例,static代表只能创建一个实例
        private static SingleCase SingleCase1 = null;
        //3、提供外界可访问的方法
        public static SingleCase GetRond()
        {
            //第一重验证
            if (SingleCase1 == null)
                lock (obj)
                {
                    //第二重验证
                    if (SingleCase1 == null)
                    {
                        SingleCase1 = new SingleCase();
                    }

                }
            return SingleCase1;
        }
        public string Name { get; set; }

    }
}

 


{
    public class SingleCase
    {
        //1、创建一个私有的构造函数,表示这个类不能被实例化
        private SingleCase() { }
        //2、自行创建一个类的实例,static代表只能创建一个实例
        private static SingleCase SingleCase1 = null;
        //3、提供外界可访问的方法
        public static SingleCase GetRond()
        {
            if (SingleCase1 == null)

            {
                SingleCase1 = new SingleCase();
            }
            return SingleCase1;
        }
        public string Name { get; set; }

    }
}