单例模式(Bill Pugh解决方案)
我正在阅读有关单例模式的Wiki,但不确定我是否理解这一点:https : //en.wikipedia.org/wiki/Initialization-on-
demand_holder_idiom的一部分正确。
如此简单:
是否是因为VM在实际使用静态类或类似的类之前未将其加载,所以在转到getInstance()方法之前不创建对象?同样,该方法线程仅在初始化对象的程度上安全吗?
回答:
我认为Pugh先生的版本受到高度重视,因为它仅在getInstance()
被调用时执行单例的实例化,即在加载类(包含getInstance方法的类)时不执行。如果您的单例构造
那么这可能对您有利。如果您像世界上大多数人那样,单身只是为了避免使用静态方法(并且您还没有进入依赖注入框架),那么我将不会为此沉迷。
如文章所述,Pugh先生的方法比静态实例变量更懒惰-
但实际上,如果加载了Singleton类,则无论如何都将调用getInstance方法。因此,作为计算机科学练习,它是有用的,但在现实世界中,它的好处值得商de。
ps我不太在意Bloch先生在此处的示例,因为使用枚举将是说My Singleton IS-
A枚举,这对我来说听起来并不正确(尤其是从正确地表示从未实现接口的人那里来看)得到常数)
以上是 单例模式(Bill Pugh解决方案) 的全部内容, 来源链接: utcz.com/qa/401020.html