31.设计模式

news/2024/12/22 20:40:56 标签: python

单例模式

比如工具类,进需要一个实例,即可以在各处处理。用以节省创建类对象的开销和内存的开销。

保证一个类只有一个实例,而客户可以从一个众所周知的访问点访问它。

实现一个简单的单例

在一个python文件中定义一个类,并创建该类的对象

python">class StrTools:
    pass


str_tool = StrTools()

在另一个python文件中定义导入该类对象使用

python">from oper_mysql import str_tool

s1 = str_tool
s2 = str_tool
# True
print(s1 == s2)
# <oper_mysql.StrTools object at 0x03ECEB90>
print(s1)
# <oper_mysql.StrTools object at 0x03ECEB90>
print(s2)
# 35402256
print(id(s1))
# 35402256
print(id(s2))

工厂模式

python">class Person:
    pass


class Worker(Person):
    pass


class Student(Person):
    pass


class Teacher(Person):
    pass


class Factory:

    def get_person(self, p_type):
        if p_type == 'w':
            return Worker()
        elif p_type == 's':
            return Student()
        else:
            return Teacher()


factory = Factory()
worker = factory.get_person('w')
student = factory.get_person('s')
teacher = factory.get_person('t')

使用get_person方法去创建具体的类对象。

优点:

1.大批量创建对象的时候有统一的入口,易于代码维护。

2.当发生修改,仅修改工厂类的创建方法即可。

3.符合现实世界的模式,即由工厂来制作产品。


http://www.niftyadmin.cn/n/5795831.html

相关文章

后端接口返回文件流,前端下载(java+vue)

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的专栏 总结 | 提效 | 拓展&#xff0c;在这个系列专栏中记录了博主在学习期间总结的大块知识点&#xff0c;以及日常工作中遇到的各种技术点 ┗|&#xff40;O′|┛ ?? 内容速览 后端获取前端下载 本身前端是可以直接通过文…

HDFS的常用命令

HDFS&#xff08;Hadoop Distributed File System&#xff09;是Hadoop项目的核心组件之一&#xff0c;它是一个分布式文件系统&#xff0c;设计用于存储大规模数据集。以下是一些常用的HDFS命令&#xff1a; 1. **查看文件系统状态** - hdfs dfsadmin -report&#xff1a;…

Linux之压缩解压相关命令

1、gzip/gunzip 作用&#xff1a;压缩和解压文件 语法&#xff1a; #压缩 压缩后缀是.gz gzip 文件 # 解压 gunzip 文件.gz 注意&#xff1a; (1)只能压缩文件不能压缩目录 (2)不保留原来的文件 (3)同时多个文件会产生多个压缩包 2、zip/unzip 作用&#xff1a;压缩和解压…

Linux IPC:读写锁汇总整理

读写锁&#xff08;Readers-Writers Locks&#xff09;是一种同步机制&#xff0c;用于允许多个线程同时读取共享资源&#xff0c;但只允许一个线程写入。这种锁的设计目的是为了提高并发性能&#xff0c;尤其是在读操作远比写操作频繁的情况下。下面详细介绍读写锁的概念、用途…

k8s迁移——岁月云实战笔记

新系统使用rockylinux9.5&#xff0c;旧系统虚拟机装的是centos7 1 目标服务器 1.1 禁止swap swapoff -a vi /etc/fstab #/dev/mapper/rl-swap none swap defaults 0 0 #执行&#xff0c;swap一行都是0 free -h 1.2 关闭防火墙 只是为了减…

RK3588 , mpp硬编码yuv, 保存MP4视频文件.

RK3588 , mpp硬编码yuv, 保存MP4视频文件. ⚡️ 传送 ➡️ Ubuntu x64 架构, 交叉编译aarch64 FFmpeg mppRK3588, FFmpeg 拉流 RTSP, mpp 硬解码转RGBRk3588 FFmpeg 拉流 RTSP, 硬解码转RGBRK3588 , mpp硬编码yuv, 保存MP4视频文件.

【单片机】IIC需要注意什么(企业级回答)

问&#xff1a;IIC需要注意的有哪些 初步测试实现阶段&#xff1a; 1、从应用层来看&#xff0c;先看数据手册确定下手册中的从机地址指的是八位地址还是七位地址。 2、确定下要对应操作的读写的寄存器 3、直接在原有的demo上尝试运行&#xff0c;看看能不能通讯成功&#xff0…

Powershell(1)

1.Powershell认识&版本信息输出 powershell自身很强大&#xff0c;cmd能做到powershell都能做&#xff0c;cmd可以写一些简单的脚本程序&#xff0c;但是实现起来并不容易&#xff0c;它的功能和可拓展性并不是很好。但是linux shell写起来就会方便很多&#xff0c;在目前…