“Python 的单例模式有四种写法,你知道么?”——孔乙己
什么是单例模式
单例模式(Singleton Pattern)是最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
注意:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
使用场景:
1、要求生产唯一序列号。
2、WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来。
3、创建的一个对象需要消耗的资源过多,比如 I/O 与数据库的连接等。
代码实现
1 使用_new_方法
__new__()
在__init__()
之前被调用,用于生成实例对象。利用这个方法和类的属性的特点可以实现设计模式的单例模式。
对这块不了解的,可以查看我以前发的文章:
2 共享属性
创建实例时把所有实例的dict指向同一个字典,这样它们具有相同的属性和方法.
3 装饰器版本
4 import方法
作为python的模块是天然的单例模式
验证一下
我们可以看到类对象和内存id()是一样的。
参考文档
https://www.runoob.com/design-pattern/singleton-pattern.html
版权声明: 本文为 InfoQ 作者【Young先生】的原创文章。
原文链接:【http://xie.infoq.cn/article/590dc163d2a13fcb6f21d8853】。未经作者许可,禁止转载。
评论