使用单例类可以保证类的一个实例将控制权交给程序员。真的很有用。
我想知道例如给定框架中是否存在单例接口(interface)以绕过显式创建/添加单例接口(interface)的需要?
贴花会很方便:
public sealed class MySingleton : ISingleton //or a different class
{ ... }
然后期望该类只被实例化一次。
这是个好主意,还是我的想法有点离题? :)
最佳答案
I was wondering if for example a Singleton Interface existed in a given framework to bypass the need to create/add one explicitly?
它不存在也不可能存在。单例基本上需要一个static Singleton getInstance()
方法,但是因为它是static
,所以不能定义为抽象(接口(interface))方法。这也是有道理的,只能有一个单例实现,不能有多个。抽象它是没有意义的。
您需要自己对完整的单例进行样板化。然而,我高度质疑这有什么用。防止堆栈溢出或内存错误当然不是它的唯一目的。编写好的代码可以避免这种情况。单例仅在您希望最终用户始终处理相同 实例时才有用。顺便说一句,没有单例模式也可以做得很好。要么只是将其声明为 static
,要么使用普通框架可以为您提供的“应用程序范围”概念。
而不是单例,而是寻找 inversion of control (依赖注入(inject))。顺便说一下,这也正是 Spring 正在做的事情。他们不使用“纯”单例。他们的用词选择很糟糕。
另见:
关于c# - Singleton 设计模式是否内置于任何框架中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3233751/