设计模式之单例模式C#实现
2021-01-27 03:15
标签:多线程 com 前言 设计 null sea pos 实例 led 前言 单例模式是老生常谈的一种设计模式,同时它是最简单也是最容易被忽视的一种设计模式。 下面是一些个人看法: (1) 单例类需要保证自己的唯一性,同时也需要避免被继承,即需要使用sealed修饰; (2) 饿汉式单例先创建好实例,懒汉式单例在需要的时候再创建实例,个人倾向于后者,因为单例模式一般管理着特定资源,懒汉式单例可以避免在不需要资源的时候也会创建实例; (3) 懒汉式单例需要在多线程环境下保持唯一性,因此需要在创建实例时加锁,对私有实例做双重判空(加锁前、加锁后),避免创建多个实例; (4) 对于资源依赖强的单例,需要使用Dispose模式(实现IDisposable接口)。 1、单例模式UML图 2、传统单例C#实现 3、演进单例C#实现 设计模式之单例模式C#实现 标签:多线程 com 前言 设计 null sea pos 实例 led 原文地址:https://www.cnblogs.com/xhubobo/p/11955071.htmlpublic class Singleton
{
private static Singleton _instance;
private Singleton()
{
}
public static Singleton Instance
{
get
{
if (_instance == null)
{
_instance = new Singleton();
}
return _instance;
}
}
}
public sealed class Singleton
{
private static Singleton _instance;
private static readonly object LockHelper = new object();
private Singleton()
{
}
public static Singleton Instance
{
get
{
if (_instance != null)
{
return _instance;
}
lock (LockHelper)
{
_instance = _instance ?? new Singleton();
}
return _instance;
}
}
}