13.单例模式,魔术方法

一.单例模式

1.1概念

含义:是一种常用的软件设计模式,模式的目的是确保某一个类只有一个实例存在。

优点:节省内存空间  缺点;多线程访问的时候容易引发线程安全问题

列如只能打开一个游戏界面

1.2实现方式

  1. 通过@classmethod
  2. 通过装饰器实现
  3. 重写__new__()实现  (重点)
  4. 通过导入模块实现

例子:

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__()实现

流程

  1. 定义一个类属性,类属性初始值为None,用来记录单例对象的引用
  2. 重写__new__()
  3. 判断,如果类属性是none,把__new__()返回的对象保存进
  4. 返回类属性中记录对象引用

 

posted on 2026-03-16 02:39  梨花苗  阅读(1)  评论(0)    收藏  举报