【发布时间】:2023-03-15 17:36:01
【问题描述】:
我是不是唯一一个有时会采取看似简单但错误的方式来摆脱某些设计情况的人?我承认我已经分享了有问题的 Singleton 对象。除此之外,众所周知,我会制作一两个上帝的对象来让事情看起来更容易。
您是否曾经使用过反模式,即使您知道不应该这样做?
【问题讨论】:
-
我对单例很好奇。懒惰的出路是只使用普通的旧全局变量,那么为什么还要麻烦使用 more 复杂的反模式呢?全局变量可能很糟糕,但它们通常不如单身人士那么糟糕。而且更容易编码。
-
我认为 Singletons 本质上是一种糟糕的设计模式,在我看来,它们仅适用于罕见的硬件驱动程序案例。在大多数其他情况下,它们只是在我的 OOP 环境中引入全局状态,这会损害设计质量目标,例如可移植性。
-
接上一条评论 - 但是,我经常通过以下逻辑来证明单例的合理性:“我只需要其中一个,所以我将其设为单例”,即使我真正内心深处想要的是一个全局变量。
-
重新单例;一些语言不允许静态接口成员 - 所以单例是一种在接口上提供类静态方法的方法(其中只有一个实例可以表示一个接口)。
-
单例与静态/全局的真正用途是单点初始化,但(至少).NET 有静态构造函数。
标签: design-patterns coding-style anti-patterns