单例设计模式

一个单例的目的是保证一个类仅有一个实例*,并*提供访问它的全局访问点。如果你只需要一个实例方便的全局访问点,而不是两者,请在转向单例之前考虑其他选项。

全局变量可能使得更难以推理代码。例如,如果其中一个调用函数对从 Singleton 接收的数据不满意,那么现在必须首先跟踪首先给出单例坏数据的内容。

单例还鼓励耦合 ,这是一个术语,用于描述连接在一起的两个代码组件,从而减少每个组件自身的自我控制措施。

单例并不友好。当一个类具有全局访问点时,每个线程都能够访问它,这可能导致死锁和竞争条件。

最后,如果在错误的时间初始化,延迟初始化可能会导致性能问题。删除延迟初始化还会删除一些首先使 Singleton 感兴趣的功能,例如多态(请参阅子类)。

来源: 游戏编程模式罗伯特·奈斯特龙