单例模式怎么继承,我一个一个写不安全也更复杂,但是我不知道要怎么继承。
2条回答 默认 最新
- hzlcsv 2024-06-21 14:10关注
public abstract class BaseSingleton<T> where T : BaseSingleton<T> { private static BaseSingleton<T>? _instance; public static BaseSingleton<T> Instance => _instance ?? throw new InvalidOperationException("instance not created"); protected BaseSingleton() { //if(_instance is not null) //{ // throw new InvalidOperationException("instance already created"); //} _instance ??= this; } } public class SingletonClass1 : BaseSingleton<SingletonClass1> { public SingletonClass1() { } } public class SingletonClass2 : BaseSingleton<SingletonClass2> { public SingletonClass2() { } } public class Singleton1 { public static Singleton1 Instance => SingletonHelper<Singleton1>.GetInstance(); public Singleton1() { } } public class Singleton2 { public static Singleton2 Instance => SingletonHelper<Singleton2>.GetInstance(() => new Singleton2()); public Singleton2() { } } public static class SingletonHelper<T> where T : class { private static readonly object _lock = new(); private static T? _instance; public static T GetInstance(Func<T>? func = null) { if (_instance is null) { lock (_lock) { func ??= Activator.CreateInstance<T>; _instance ??= func(); } } return _instance; } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 做个有关计算的小程序
- ¥15 MPI读取tif文件无法正常给各进程分配路径
- ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
- ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
- ¥15 setInterval 页面闪烁,怎么解决
- ¥15 如何让企业微信机器人实现消息汇总整合
- ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
- ¥15 如何用Python爬取各高校教师公开的教育和工作经历
- ¥15 TLE9879QXA40 电机驱动
- ¥20 对于工程问题的非线性数学模型进行线性化