实践GoF的设计模式:单例模式
摘要:单例模式虽然简单易用,但也是最容易被滥用的设计模式。它并不是“银弹”,在实际使用时,还需根据具体的业务场景谨慎使用。 本文分享自华为云社区《【Go实现】实践GoF的23种设计模式:单例模式》,作者: 元闰子。 简述 GoF 对单例模式(Singleton)的定义如下: Ensure a class only has one instance, and provide a global point of access to it. 也即,保证一个类只有一个实例,并且为它提供一个全局访问点。 在程序设计中,有些对象通常只需要一个共享的实例,比如线程池、全局缓存、对象池等。实现共享实例最简单直接的方式就是全局变量。但是,使用全局变量会带来一些问题,比如: 客户端程序可以创建同类实例,从而无法保证在整系统上只有一个共享实例。 难以控制对象的访问,比如想增加一个“访问次数统计”的功能就很难,可扩展性较低。 把实现细节暴露给客户端程序,加深了耦合,容易产生霰弹式修改。 对这种全局唯一的场景,更好的是使用单例模式去实现。单例模式能够限制客户端程序创建同类实例,并且可以在全局访问点上扩展或修改功...