- 作者:老汪软件技巧
- 发表时间:2024-11-10 04:00
- 浏览量:
单例模式介绍
单例模式是一种创建型设计模式,它主要确保在一个类只有一个实例,并提供一个全局访问点来获取该实例。在C#中,有多种方式实现单例模式,每种方式都有其特定的使用场景和注意事项。
设计模式的作用饿汉式单例模式
饿汉式单例是在类加载时就创建实例。优点是实现简单,缺点是如果该实例不被使用会造成资源浪费。
///
/// 饿汉式单例模式
///
public class SingletonEager
{
private SingletonEager() { }
private static readonly SingletonEager _instance = new SingletonEager();
public static SingletonEager Instance
{
get { return _instance; }
}
public void DoSomething()
{
Console.WriteLine("饿汉式单例模式.");
}
}
懒汉式单例模式
懒汉式单例在第一次被访问时才创建实例。为了线程安全,通常需要使用锁机制。
///
/// 懒汉式单例模式
///
public class SingletonLazy
{
private SingletonLazy() { }
private static SingletonLazy? _instance;
private static readonly object _lockObj = new object();
public static SingletonLazy Instance
{
get
{
if (_instance == null)
{
lock (_lockObj)
{
if (_instance == null)
{
_instance = new SingletonLazy();
}
}
}
return _instance;
}
}
public void DoSomething()
{
Console.WriteLine("懒汉式单例模式.");
}
}
懒加载单例模式
如果您使用的是 .NET 4(或更高版本),可以使用Lazy类来实现线程安全的懒加载单例模式。
///
/// 懒加载单例模式
///
public sealed class SingletonByLazy
{
private static readonly Lazy _lazy = new Lazy(() => new SingletonByLazy());
public static SingletonByLazy Instance { get { return _lazy.Value; } }
private SingletonByLazy() { }
public void DoSomething()
{
Console.WriteLine("懒加载单例模式.");
}
}
设计模式入门实战教程
/s/FM0ThUR92…