13.单例模式,魔术方法
一.单例模式
1.1概念
含义:是一种常用的软件设计模式,模式的目的是确保某一个类只有一个实例存在。
优点:节省内存空间 缺点;多线程访问的时候容易引发线程安全问题
列如只能打开一个游戏界面
1.2实现方式
- 通过@classmethod
- 通过装饰器实现
- 重写__new__()实现 (重点)
- 通过导入模块实现
例子:
class test(object):
pass
t1 = test()
print(t1) #<__main__.test object at 0x0000025B0B61CDF0>
t2 = test()
print(t2) #<__main__.test object at 0x0000025B0B5BDAC0>
内存地址不一样,说明对象不一样
而实现单例模式只能存在一个对象,对象的内存地址得一样
1.3 重写__new__()实现
流程
- 定义一个类属性,类属性初始值为None,用来记录单例对象的引用
- 重写__new__()
- 判断,如果类属性是none,把__new__()返回的对象保存进
- 返回类属性中记录对象引用
浙公网安备 33010602011771号