相关疑难解决方法(0)

.NET的一个明显的单例实现?

我在考虑懒惰单例初始化的经典问题 - 完全无效的问题:

if (instance == null)
{
    instance = new Foo();
}
return instance;
Run Code Online (Sandbox Code Playgroud)

任何知道Singleton是什么的人都熟悉这个问题(你只需要if一次).这是微不足道的,但很刺激.

所以,我想到了一个替代解决方案,至少对于.NET来说(尽管它应该可以在任何具有等效功能指针的地方工作:

public class Foo
{
    private delegate Foo FooReturner();

    private static Foo innerFoo;

    private static FooReturner fooReturnHandler = new FooReturner(InitialFooReturner);

    public static Foo Instance
    {
        get
        {
            return fooReturnHandler();
        }
    }
    private static Foo InitialFooReturner()
    {
        innerFoo = new Foo();
        fooReturnHandler = new FooReturner(NewFooReturner); 
        return innerFoo;
    }

    private static Foo NewFooReturner()
    {
        return innerFoo;
    }

}
Run Code Online (Sandbox Code Playgroud)

简而言之 - Instance返回一个委托方法.委托最初设置为初始化实例的方法,然后将委托更改为指向简单的Return方法.

现在,我喜欢认为我的工作并不可怕,但我并不担心自己很棒.我没有在任何地方看到这个代码的例子.

因此,我得出结论,我错过了一些东西.重要的东西.要么整个​​问题太过微不足道,要么不必考虑太多,或者这会造成毁灭宇宙的可怕事情.或者我在搜索时失败,因此没有看到数百名开发人员使用这种方法.无论如何,还有什么.

我希望Stack Overflow这里的优秀人员可以让我知道什么(除了关于是否应该使用Singleton的争议).

编辑澄清: …

.net c# singleton

19
推荐指数
2
解决办法
3424
查看次数

如何只有一个类的实例?

有没有办法在类中创建唯一的实例?

此时,我正在尝试只创建一个Random类的实例.有几次我需要用一粒种子.以后可以换种子吗?

我不确定,我猜这是一个单身人士.

更新:我需要的是只有一个Random类的实例.这个想法是使用相同种子的几次.但后来我需要改变种子,所以我不确定单身是否是最好的方法,因为我想改变种子意味着创建一个新的实例.

c# random singleton design-patterns

0
推荐指数
2
解决办法
3446
查看次数

标签 统计

c# ×2

singleton ×2

.net ×1

design-patterns ×1

random ×1