单例模式
using System;
namespace SingletonPattern
{
/// <summary>
/// 单例模式基类
/// </summary>
/// <typeparam name="T">要实现单例模式的类类型</typeparam>
public abstract class SingletonBase<T> where T : SingletonBase<T>, new()
{
// 用于存储单例实例
private static readonly Lazy<T> instance = new Lazy<T>(() => new T());
/// <summary>
/// 获取单例实例
/// </summary>
public static T Instance => instance.Value;
// 保护构造函数,防止外部实例化
protected SingletonBase()
{
if (instance.IsValueCreated)
{
throw new InvalidOperationException("不能创建单例类的另一个实例。");
}
}
/// <summary>
/// 初始化单例实例的方法,可以由派生类重写
/// </summary>
protected virtual void Initialize()
{
// 可由派生类实现
}
}
/// <summary>
/// 一个具体的单例类示例
/// </summary>
public class MySingleton : SingletonBase<MySingleton>
{
// 私有构造函数
private MySingleton()
{
// 在这里可以放置初始化代码
}
// 可以重写初始化方法
protected override void Initialize()
{
base.Initialize();
// 在这里添加具体的初始化逻辑
}
// 示例方法
public void DoSomething()
{
Console.WriteLine("MySingleton is doing something.");
}
}
class Program
{
static void Main(string[] args)
{
// 获取单例实例并调用其方法
MySingleton.Instance.DoSomething();
}
}
}
标签:SingletonBase,模式,MySingleton,实例,单例,new,public
From: https://www.cnblogs.com/guan-tou6/p/18334839