网站开发后端菜鸟教程,wordpress主页加音乐,引流推广软件,域名 空间 网站制作前言 什么是单例模式
指一个类只有一个实例#xff0c;且该类能自行创建这个实例的一种创建型设计模式。使用目的#xff1a;确保在整个系统中只能出现类的一个实例#xff0c;即一个类只有一个对象。对于频繁使用的对象#xff0c;“忽略”创建时的开销。特点#xff1a…前言 什么是单例模式
指一个类只有一个实例且该类能自行创建这个实例的一种创建型设计模式。使用目的确保在整个系统中只能出现类的一个实例即一个类只有一个对象。对于频繁使用的对象“忽略”创建时的开销。特点 单例类只有一个实例对象该单例对象必须由单例类自行创建单例类对外提供一个访问该单例的全局访问点
如何保证实例的唯一性
那么如何保证实例的唯一性
Java 的解决方案之一
对于 Java 来说要确保类的构造方法是私有的使用 static final 的私有成员变量存放这个唯一实例。我们还要提供一个获取实例的接口由于我们要通过类名获取实例所以接口方法是 static 的。实现如下
public class Singleton {private static final Singleton instancenew Singleton();private Singleton() {}public static Singleton getInstance() {return instance;}
} 我们知道对于 static 的变量类所有的实例都可以共享这个变量我们可以直接通过类名来访问它。再使用 final 修饰这个变量使得它不能再被改变。 戳此处深入了解 →
Python 的解决方案之一
以下为 Python 使用装饰器实现的单例模式。这里将不可变的类地址存放在了 dict 中值为那个唯一的实例。
def Singleton(cls):_instance {}def getInstance(*args, **kwargs):if cls not in _instance:_instance[cls] cls()return _instance[cls]return getInstanceSingleton
class test_singleton:def __init__(self):passdef main():class1 test_singleton()class2 test_singleton()print(class1 id: {}, class2 id: {}.format( id(class1), id(class2)))print(class1 class2)main()# class1 id: 1814844368152, class2 id: 1814844368152
# True
参考
Creating a singleton in Python单例模式单例设计模式详解 本文由博客群发一文多发等运营工具平台 OpenWrite 发布