为什么辛格尔顿被认为是反模式?

为什么辛格尔顿被认为是反模式?

可能重复:
单身人士有什么不好的?

单例设计模式:陷阱

单例反模式

我最近听说辛格尔顿是反模式的。我知道这与使类单例类似于使唯一实例成为全局变量有关,但它还做了更多的工作(限制该对象的实例数量、管理实例化等等)。

为什么辛格尔顿被认为是反模式?还有什么可供选择的呢?


互换的青春
浏览 890回答 3
3回答

MYYA

我不认为单身是一种反模式。但是,单例基本上是一种使用全局变量的方法。全局变量是不好的,因为系统中任何地方的代码都可以更改它们的值。因此,在调试时,很难确定哪条代码路径会导致单例的当前状态。

冉冉说

我认为它被认为是反模式,因为其他对象不能正常地实例化Singleton类(除了调用这种通常称为“getInstance”的方法外)。因此,它看起来就像类被直接使用,而不是先实例化它来创建一个可用的对象。我同意你的观点,辛格尔顿可以作为一个全球独一无二的例子。我从一些人那里了解到,作为Singleton的替代品,我们可以使用静态变量和/或最终变量,我们也可以使用枚举(这样我们就可以使用一个组名对多个变量进行分组,就像我们在使用普通类/对象时通常所做的那样)。但是,这些替代只能与Singleton类在存储状态/值方面的能力相匹配。如果我们需要使用唯一的函数,那么这些静态/最终变量和枚举就帮不上忙了。在我看来,当我们需要使用Singleton类(当我们需要一些独特的函数来处理静态/最终状态/值时),情况就是这样。干杯.。*)
打开App,查看更多内容
随时随地看视频慕课网APP