gpt4 book ai didi

.net - .Net 中的单例模式是不可能的吗?

转载 作者:行者123 更新时间:2023-12-01 06:53:35 26 4
gpt4 key购买 nike

我有一个非常有趣的情况,我发现使用 .net 框架(任何版本)并不是所有可能的单例模式

看看下面的这段代码

namespace SingletonPattern
{
class Singleton
{
private static readonly Singleton instance = new Singleton();
private static int mcount = 0;

private Singleton() {

mcount += 1;
Console.WriteLine("Creating {0} instances of Singleton Class", mcount.ToString());
}

public static Singleton Instance
{
get
{
return instance;
}
}
}

class program
{
static void Main()
{
for (int i = 0; i < 1000; i++)
{
System.Activator.CreateInstance(Type.GetType("SingletonPattern.Singleton"), true);
}

Console.ReadLine();


}
}
}

在 System.activator 的帮助下,任何伙伴都可以打破单例模式。

那么谁有风险呢?

任何编写一些许可组件的人,其中许可是作为单例模式实现的。

任何使用单例模式的基于服务器的代码。

也许我错了,或者我的发现没有意义,但我只是想分享并想知道你的观点?

最佳答案

仅仅因为可以通过这种方式故意规避模式并不意味着模式本身“不可能”。

关于.net - .Net 中的单例模式是不可能的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1460907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com