C# 单例模式
作者:互联网
/* 单例模式 饿汉式 :第一时间创建实例,类加载就马上创建 懒汉式 :需要才创建实例,延迟加载 单例模式会长期持有一个对象,不会释放 普通实例使用完后释放 单例可以只构造一次,提升性能(如果构造函数耗性能) 单例就是保证类型只有一个实例:计数器/数据库连接池 程序中某个对象,只有一个实例 */ /// <summary> /// 单例之懒汉模式 /// </summary> public class SingleDemo { private static SingleDemo _singleDemo=null; //创建访问这对象,用于加锁 private static object SingleDemo_lock = new object();//锁同步 /// <summary> /// 私有构造函数 防止来访者实例化 /// </summary> private SingleDemo() { } public static SingleDemo WriteName() { if (_singleDemo == null) { lock (SingleDemo_lock) { if (_singleDemo == null) { Console.WriteLine("被创建"); _singleDemo = new SingleDemo(); } Console.WriteLine("使用"); } } return _singleDemo; } } /// <summary> /// 单例之饿汉模式 /// 使用静态字段 /// </summary> public class SingleDemo1 { private static readonly SingleDemo1 _singleDemo1 = new SingleDemo1(); private SingleDemo1() { } public static SingleDemo1 WriteName() { return _singleDemo1; } } /// <summary> /// 单例之饿汉模式 /// 使用静态构造函数 /// </summary> public class SingleDemo2 { private static int num = 0; private static SingleDemo2 _singleDemo2 = null; static SingleDemo2() { num += 2; _singleDemo2 = new SingleDemo2(); Console.WriteLine(num); } public static SingleDemo2 WriteName() { num += 1; Console.WriteLine(num); return _singleDemo2; } } /// <summary> /// 调用 /// </summary> /// <param name="args"></param> static void Main(string[] args) { TaskFactory taskFactory = new TaskFactory(); List<Task> taskList = new List<Task>(); for (int i = 0; i < 5; i++) { taskList.Add(taskFactory.StartNew(() => { //SingleDemo singleDemo = SingleDemo.WriteName(); //SingleDemo1 singleDemo1 = SingleDemo1.WriteName(); SingleDemo2 singleDemo2 = SingleDemo2.WriteName(); })); } Console.ReadKey(); }
标签:C#,SingleDemo1,SingleDemo2,private,static,模式,单例,SingleDemo 来源: https://www.cnblogs.com/pushYYL/p/13080178.html