为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

互换的青春 2019-07-05 14:58:46
为什么辛格尔顿被认为是反模式?可能重复:单身人士有什么不好的?单例设计模式:陷阱单例反模式我最近听说辛格尔顿是反模式的。我知道这与使类单例类似于使唯一实例成为全局变量有关,但它还做了更多的工作(限制该对象的实例数量、管理实例化等等)。为什么辛格尔顿被认为是反模式?还有什么可供选择的呢?
查看完整描述

3 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

我不认为单身是一种反模式。

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


查看完整回答
反对 回复 2019-07-05
?
冉冉说

TA贡献1877条经验 获得超1个赞

我认为它被认为是反模式,因为其他对象不能正常地实例化Singleton类(除了调用这种通常称为“getInstance”的方法外)。因此,它看起来就像类被直接使用,而不是先实例化它来创建一个可用的对象。

我同意你的观点,辛格尔顿可以作为一个全球独一无二的例子。我从一些人那里了解到,作为Singleton的替代品,我们可以使用静态变量和/或最终变量,我们也可以使用枚举(这样我们就可以使用一个组名对多个变量进行分组,就像我们在使用普通类/对象时通常所做的那样)。

但是,这些替代只能与Singleton类在存储状态/值方面的能力相匹配。如果我们需要使用唯一的函数,那么这些静态/最终变量和枚举就帮不上忙了。在我看来,当我们需要使用Singleton类(当我们需要一些独特的函数来处理静态/最终状态/值时),情况就是这样。

干杯.。*)


查看完整回答
反对 回复 2019-07-05
  • 3 回答
  • 0 关注
  • 889 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信