3
|
Hamish Grubijan · 技术社区 · 15 年前 |
![]() |
1
1
不,在.NET框架中没有类似的内容。你得自己写单件。为单例定义API有点困难,因为有很多实现它们的方法,并且取决于您的目标,取决于您将采用什么方法。 我建议你读这个 article on singletons . (由 Jon -他是个聪明的人,听他说)在各种技巧上寻求指导和建议。它涵盖了一些大多数人可能没有想到的东西。 [很多人认为单体模式是一种可疑的设计模式。我不会在这里讨论原因,但是如果你感兴趣的谷歌有很多信息。注意不要过度使用。] |
![]() |
2
4
你发现自己多久写一次单人课? 我建议,如果对你来说这是一个足够频繁的任务,你会觉得你正在失去生产力,那么你很可能会过度使用这个模式。我发现它非常 很少地 适当-但很容易导致难以测试的代码。 用C语言写一个单件课程不仅仅是无脑的——几乎完全没有痛苦。如果你不需要的话,所需的锅炉板很小。 绝对的 懒惰到不应该仅仅通过调用其他静态方法来实例化单例的地步。
显然,您无论如何都需要一个类声明,所以您已经保存了三行或四行,这取决于您是否需要静态构造函数。就我个人而言,我不认为这是如此费时,在罕见的情况下,单件是有效的,它值得成为框架的一部分。 事实上,很难看出 框架 功能而不是 语言 特色…至少编译器必须意识到这一点,才能理解将有一些神奇的“实例”属性(或其他任何属性)可供调用方使用。 正如EricLippert喜欢指出的(完全合理地,我可能会补充)语言特性在设计、实现和测试方面有很大的成本。此外,每个开发人员都有学习新语言特性的负担。简言之,他们需要真正地获得他们的价值——对我来说,是单身模式。 不是 足够有用和重要,它使酒吧。 |
![]() |
3
3
有什么可以强迫的?单例可以用一个属性和一个字段来实现。对于任何框架开发人员来说,这里似乎没有一个非常好的价值/成本比。 更不用说,单例模式通常是一个不好的模式,在我看来,让框架来推广它们是不好的。对我来说,单身几乎总是一种代码味道。 |
![]() |
4
2
正如其他人和我(在评论中)所指出的,单例模式很少适用。 尽管如此,由于一些人认为这不可行,下面是实现这种单例的帮助器类(受到有关如何实现单例的链接文章的启发):
要用作singleton的类需要有一个公共的默认构造函数。 然后您可以使用它,如下所示:
|
![]() |
5
1
我认为那是不可能的。 接口如何禁止您向类中添加公共构造函数? 毕竟,一旦您了解了基本模式(以及使其线程安全的注意事项),编写单例就没有那么多工作了。 |
![]() |
6
1
切。粘贴。下一步。 |
![]() |
7
1
使用反转控制容器为您管理它。 用 StructureMap ,可以将任何类型声明为singleton:
检索它:
|
![]() |
8
1
.NET 4.0附带MEF。您可以使用MEF来实例化一个单例。通过共享创建策略。我要找出一个代码示例… 编辑---- 更好的是,这里有一些文件…… http://mef.codeplex.com/wikipage?title=Parts%20Lifetime&referringTitle=Guide |
![]() |
Linesofcode · 错误未指定sqlcese40。dll 7 年前 |
![]() |
Arvo Bowen · 如何使用父控件的默认字体创建用户控件? 9 年前 |
![]() |
Asdfg · 如何解析此文本并构建对象 10 年前 |
![]() |
qakmak · WPF win8平板电脑模式键盘隐藏屏幕底部的项目 10 年前 |
![]() |
DeJaVo · .NET4到.NET4.5运行时的更改是什么 10 年前 |