首页 > 其他分享 >设计模式-创建型模式之单例

设计模式-创建型模式之单例

时间:2022-09-21 20:13:39浏览次数:70  
标签:__ Valley 创建 self args instance 单例 kwargs 设计模式

1、元类实现

 1 class Singleton(type):
 2     def __init__(self, *args, **kwargs):
 3         super().__init__(*args, **kwargs)
 4         self._instance = None
 5 
 6     # 重写__call__
 7     def __call__(self, *args, **kwargs):
 8         if not self._instance:
 9             self._instance = super().__call__(*args, **kwargs)
10         return self._instance
11 
12 
13 class Valley(metaclass=Singleton):
14     ...
15 
16 
17 a = Valley()
18 b = Valley()
19 print(id(a), id(b))

 

2、装饰器实现

 1 def singleton(cls):
 2     _instance = {}
 3 
 4     def wrapper(*args, **kwargs):
 5         if cls not in _instance:
 6             _instance[cls] = cls(*args, **kwargs)
 7         return _instance[cls]
 8 
 9     return wrapper
10 
11 
12 @singleton
13 class Valley():
14     ...
15 
16 
17 a = Valley()
18 b = Valley()
19 print(id(a), id(b))

 

标签:__,Valley,创建,self,args,instance,单例,kwargs,设计模式
From: https://www.cnblogs.com/shixiaogu/p/16716577.html

相关文章

  • linux创建组和用户,切换用户
      一、创建组[root@zabbix-server~]#groupaddmonitor-ggid:指定组ID号二、创建用户[root@zabbix-server~]#useradd-u501-gmonitor-Gadmin-d/monit......
  • 创建一个简单的热力图实例
    1.安装heatmapjs//NPMnpmiheatmapjs//或者yarnyarnaddheatmapjs2.导入h337importh337from'heatmapjs';3.定义全局变量(在react中可用useRef做一个......
  • JAVA设计模式-建造者模式
    JAVA设计模式-建造者模式介绍建造者模式是通过一步一步的步骤构建一个包含多个部件的对象,每个不同的对象都是具有相同的构建过程。适用于复杂对象的构建,用户不需要知道......
  • 计算机系统课程和重构设计模式图书推荐
    ▲计算机系统课程▲重构和设计模式的推荐书籍......
  • 【Vue项目实践】创建一个 electron+vue3 的项目
    采用vite来创建一个vue项目,然后在项目中加入electron的配置参考链接:Vite+Electron快速构建一个VUE3桌面应用(一)创建项目1.安装viteyarncreatevite2.创......
  • 在代码库上设计和创建模块
    在代码库上设计和创建模块为什么我们需要以及如何在代码库中创建模块在业务逻辑和其他功能分散的代码库上工作至少对软件开发人员来说是一个令人沮丧的情况。模块是一......
  • conda中如何创建、查看、删除虚拟环境
     001、查看利用conda创建的虚拟环境(base)[root@PC1software]#condaenvlist#condaenvironments:#base*/root/anaconda3  002、......
  • JAVA进阶--XML、XML解析、XPath、设计模式--2022年9月19日
    第一节1、XML是什么?XML的全称为(EXtensibleMarkupLanguage),是一种可扩展的标记语言它是一种数据表示格式,可以用于自定义数据格式2、......
  • Java【Mybatis】——创建Mybatis Mapper模板
    目的在编码过程中,我们常常需要写一些配置文件。而这些配置文件的格式都是固定的——关键是我通常记不住,也是找地方复制。这种方法可以,但没有必要。因为一种方式,更简便—......
  • 设计模式---建造者模式
    概要设计模式类型:创建型目标问题:创建对象时,参数设置的灵活性问题。(具体看案例)接下来我们看一个需要改进的案例。对象创建的优化现在有个Employee类,你能预想到在开......