继承实现单例模式的探索(一)

前言

之前看到朋友采用继承的方式来实现单例模式,觉得很厉害,随后自己去探索了一番,以前实现单例模式都是把代码内联到具体的类中,这使得工程中每次需要使用单例模式时,都采用拷贝的方式,增加了很多冗余代码,并且难以规范单例的统一标准,使得代码不方便扩展和管理。这次探索找到了一种实现方式,先记录下来,后续如果有其它方式再发表系列文章,示例代码为C#。

代码

v1.0
using System;

/// <summary>
/// 单例模式基类
/// </summary>
/// <typeparam name="T">单例类型</typeparam>
public abstract class Singleton<T>
where T : class, new()
{
    public static T instance => _instance.Value;
    static bool _unlock;
    static readonly Lazy<T> _instance = new Lazy<T>(() =>
    {
        _unlock = true;
        return new T();
    });

    protected Singleton()
    {
        if (!_unlock)
            throw new InvalidOperationException("Singleton:The ctor is proxied by singleton and cannot be called from outside.");
        _unlock = false;
    }
}
v1.1 
usin
posted @ 2024-09-27 16:57  我与岁月的森林  阅读(0)  评论(0)    收藏  举报  来源