Sau*_*abh 3 .net singleton design-patterns
我有一个非常有趣的情况,我已经发现使用.net框架(任何版本)都不可能使用Singleton模式
看下面这段代码
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
在System.activator的帮助下,任何好友都可以打破单件模式.
谁有风险呢?
任何编写一些许可组件的人,其中许可证是作为单例模式实现的.
任何基于服务器的代码都使用Singleton模式.
也许我错了或者我的发现没有意义,但我只想分享并想知道你的看法?
And*_*are 13
确实,单例的实现是错误的,但这并不意味着有人无法创建更好的单例实现.
要使用System.Activator.CreateInstance,您需要高权限.当然,如果您被允许忽略访问修饰符,因为系统信任您,那么您可以破坏依赖于消费者尊重访问修饰符的代码.
通常,代码通常不具有这些权限.
| 归档时间: |
|
| 查看次数: |
2206 次 |
| 最近记录: |