单实例(Single Instance)或单例(Singleton)模式是一种创建型设计模式,它允许您确保一个类只有一个实例。
奇亚娜·西蒙斯
奇亚娜·西蒙斯
2022 年 10 月 6 日 — 阅读 2 分钟
软件设计模式:单实例
图片:@Sarinya9940 @freepik
单实例(Single Instance)或单例(Singleton)模式是一种创建型 澳大利亚消费者电子邮件列表 设计模式,它允许您确保一个类只有一个实例。同时它为您提供了对该实例的全局访问点。
单实例模式解决什么问题?
单实例模式同时解决了两个问题。请小心,这意味着它违反了单一职责原则:
确保一个类只有一个实例。事实证明,控制一个类拥有的实例数量可以让您控制对某些共享资源(如数据库)的访问。
提供该实例的全局访问点。单例模式允许您从程序中的任何位置访问某些对象,例如全局变量,但它也可以保护该实例不被其他代码覆盖。
你怎么做?
那么,单实例模式通过以下两个常见步骤来实现:
将默认构造函数设置为私有(在某些编程语言中很特殊),以防止其他对象将new运算符与 Single Instance 类一起使用。
创建一个充当构造函数的静态创建方法。该方法调用私有构造函数来创建对象并将其保存到静态字段。对此方法的所有后续调用都会返回缓存的对象,并且始终返回相同的对象。
何时使用单实例模式?
当程序中的类必须具有可供所有客户端使用的单个实例时,您可以使用单实例模式。一个真实的例子是,如果您正在为某个政府的政府开发软件(只有一个政府),那么您将拥有一个由程序的不同部分共享的单个数据库对象。
当您需要更严格地控制全局变量时,您还可以使用单实例模式。与全局变量不同,这种模式保证一类只有一个实例。