当前位置: 首页 > news >正文

Python设计模式

Python设计模式

单例模式

掌握单例模式的作用和写法
设计模式
设计模式是一种编程套路,可以极大的方便程序的开发
最常见、最经典的设计模式,就是面向对象
除了面向对象以外,在编程中也有很多既定的套路可以方便开发,称之为设计模式:
单例、工厂模式;建造者、责任链、状态、备忘录、解释器、访问者、观察者、中介、模板、代理模式;等等模式
设计模式非常多,基础阶段先暂时学习两种常用的
在这里插入图片描述

单例模式是一种常用的设计软件模式,该模式的主要目的是确保某一类只有一个实例存在,在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场
定义:保证一个类只有一个实例,并提供一个访问它的全局访问点
适用场景:当一个类只能有一个实例,而用户可以从一个众所周知的访问点访问它时
在这里插入图片描述

class StrTools:passs1 = StrTools()
s2 = StrTools()
print(s1)
print(s2)"""
# str_tools.py 文件class StrTools:pass
str_tool = strtools()
""""""
# test.py 文件from str_tools_py import str_tools1 = str_tool
s2 = str_toolprint(id(s1))
print(id(s2))
"""

总结
1.什么是设计模式
设计模式就是一种编程套路
使用特定的套路得到特定的效果
2.什么是单例设计模式
单例模式就是对一个类,只获取其唯一的类实例对象,持续复用它:节省内存;节省创建对象的开销

工厂模式

掌握工厂模式的作用和写法
工厂模式当需要大量创建一个类的实例的时候,可以使用工厂模式。即,从原生的使用类的构造去创建对象的形式
迁移到,基于工厂提供的方法去创建对象的形式

class Person:pass
class Worker(Person):pass
class Student(Person):pass
class Teacher(Person):pass"""
worker = Worker()
stu = Student()
teacher = Teacher()
"""
# 工厂模式代码
class PersonFactory:def get_person(self,p_type):if p_type == 'w':return Worker()elif p_type == 's':return Student()else:return Teacher()pf = PersonFactory()
worker = factory.get_person('w')
stu = factory.get_person('s')
teacher = factory.get_person('t')
"""
使用工厂类的get_person()方法去创建具体的类对象优点:
1.大批量常见对象的时候有统一的入口,容易代码维护
2.当发生修改,仅修改工厂类的创建方法即可
3.符合现实世界的模式,即由工厂来制作产品(对象)
"""

总结:
1.什么是工厂模式
将对象的创建由原生类本身创建
转换到由特定的工厂方法来创建
2.好处
2.1.大批量常见对象的时候有统一的入口,容易代码维护
2.2.当发生修改,仅修改工厂类的创建方法即可
2.3.符合现实世界的模式,即由工厂来制作产品(对象)


文章转载自:

http://96tbfJq6.fywqr.cn
http://502zceU0.fywqr.cn
http://vxY1gVpw.fywqr.cn
http://b22lHVAe.fywqr.cn
http://2AzcSncj.fywqr.cn
http://WHaClo7a.fywqr.cn
http://wHXaFpXx.fywqr.cn
http://cXoOY8oO.fywqr.cn
http://pK29r9eq.fywqr.cn
http://gsKAAMgy.fywqr.cn
http://H4WEcXzd.fywqr.cn
http://OP2poKfc.fywqr.cn
http://MAKTjG8I.fywqr.cn
http://JQcuGt76.fywqr.cn
http://QriVLqhH.fywqr.cn
http://mbZVW6od.fywqr.cn
http://zCwBMG4c.fywqr.cn
http://JiwY1gsU.fywqr.cn
http://cLIAqsqg.fywqr.cn
http://V6gHx3uS.fywqr.cn
http://1w4v12Ra.fywqr.cn
http://jOlzVV3i.fywqr.cn
http://QwKpWvMd.fywqr.cn
http://iMhjV0fg.fywqr.cn
http://hRoHgNYx.fywqr.cn
http://ZCqhCIOZ.fywqr.cn
http://Y8AuKSHV.fywqr.cn
http://zrmJWIOY.fywqr.cn
http://1h1GWwcG.fywqr.cn
http://LQLuhIRQ.fywqr.cn
http://www.dtcms.com/a/376750.html

相关文章:

  • AD8028ARZ-REEL7电子元器件ADI 运算放大器IC 精密模拟芯片
  • uniapp和vue3项目中引入echarts 、lime-echart(微信小程序、H5等)
  • SpringMVC 执行流程分析 详解(图解SpringMVC执行流程)
  • Pytest 常见问题及其解决方案
  • 9-10关于JS初学产生的问题
  • Gradle使用技巧(Android场景)
  • 【Kubernetes】常见面试题汇总(十三)
  • MySql 内外连接
  • 从Java全栈到前端框架的实战之路
  • AI电子宠物本地部署模型方案全面解析
  • 行业学习【电商】:垂直电商如何理解?以专业宠物平台为例
  • Android 项目:画图白板APP开发(五)——橡皮擦(全面)
  • 2018年下半年 系统架构设计师 综合知识
  • SPEA2多目标进化算法:理论与应用全解析
  • 医院高值耗材智能化管理路径分析(上)
  • Java 声明式编程- Stream API 实战
  • 9月10日
  • LeakCanary原理示例讲解
  • 多集群 Kubernetes 部署与混合云资源治理架构设计分享
  • 人工智能机器学习——模型评价及优化
  • IndexTTS2安装说明
  • Vue:事件处理机制详解
  • 【笔记】空气弹簧概述、刚度调节原理
  • IgH EtherCAT 主站核心技术解析:从架构到工业部署的底层逻辑
  • tvm/triton/tensorrt比较
  • kernel_liteos_m移植到正点原子阿波罗F429_keil版
  • <数据集>yolo梨幼果识别数据集<目标检测>
  • BUG排查流程
  • 搞坏了docker 双系统下重装ubuntu22.04
  • MySQL 全库备份 Shell 脚本详解(排除系统库 + 安全配置)