gpt4 book ai didi

.net-4.0 - 即使使用 .Net4.0,我是否仍然需要在 .net 中手动实现单例类?

转载 作者:行者123 更新时间:2023-12-01 07:22:18 25 4
gpt4 key购买 nike

一旦理解了单例模式,在 C# 中编写后续的单例类就是一项无脑练习。我希望该框架可以通过提供接口(interface)或基类来帮助您。这是我的设想:

public sealed class Schablone : ISingleton<Schablone>
{
// Stuff forced by the interface goes here

// Extra logic goes here
}

我正在寻找的东西存在吗?

构造单例类是否有一些语法糖——无论是接口(interface)、类属性等吗?

可以自己编写一个有用且防弹的 ISingleton 吗?愿意尝试吗?

谢谢!

最佳答案

你发现自己多久写一次单例类?

我建议,如果对您来说这是一项足够频繁的任务,以至于您觉得自己正在失去生产力,那么您很可能过度使用了该模式。我发现它很少适合 - 但很容易导致难以测试的代码。

用 C# 编写一个单例类不仅是无脑的——它几乎完全没有痛苦。所需的样板很小,假设您不需要绝对懒惰到不应该仅通过调用其他静态方法来实例化单例的地步。

public sealed class Singleton
{
private static readonly Singleton instance = new Singleton();
public static Singleton Instance { get { return instance; } }

private Singleton() {}

// Omit if you don't care about type initializer laziness
static Singleton() {}
}

显然,无论如何您都需要一个类声明,因此您已经保存了三行或四行,具体取决于您是否需要静态构造函数。就我个人而言,我认为对于单例有效的罕见情况而言,这不是那么耗时,值得成为框架的一部分。

确实,很难看出它如何成为框架功能而不是语言功能......至少编译器必须意识到它,才能理解会有一些神奇的“实例”属性(或其他任何东西) ) 它应该提供给调用者。

正如 Eric Lippert 喜欢指出的那样(完全合理,我可能会补充)语言特性在设计、实现和测试方面具有与其相关的巨大成本。此外,每个开发人员都有学习新语言功能的负担。简而言之,他们需要真正赢得他们的值(value)——对我来说,单例模式并没有足够有用和重要,它使酒吧成为可能。

关于.net-4.0 - 即使使用 .Net4.0,我是否仍然需要在 .net 中手动实现单例类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2724550/

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