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

31.设计模式

单例模式

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

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

实现一个简单的单例

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

class StrTools:
    pass


str_tool = StrTools()

在另一个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))

工厂模式

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.kler.cn/a/446865.html

相关文章:

  • Vue3组件封装技巧与心得
  • 【docker】如何打包前端并运行
  • 手眼标定工具操作文档
  • 04_ok_java_websocket_端口转发_将服务器的流端口转到本地
  • C++ OpenGL学习笔记(1、Hello World空窗口程序)
  • SSH连接成功,但VSCode连接不成功
  • Element@2.15.14-tree checkStrictly 状态实现父项联动子项,实现节点自定义编辑、新增、删除功能
  • Java基础面试题17:GenericServlet和HttpServlet有什么区别?
  • 【Java】mac安装Java17(JDK17)
  • 前端数据持久化指南:LocalStorage、SessionStorage 等的区别与应用
  • 从零用java实现 小红书 springboot vue uniapp (4)个人主页优化
  • 首个!艾灵参编的工业边缘计算国家标准正式发布
  • Epic游戏使用mod
  • MySQL通过日志恢复数据的步骤
  • Java中的方法重写:深入解析与最佳实践
  • debian linux 连网自动调整时间 (报错 Unit systemd-timesyncd.service could not be found.)
  • .NET周刊【12月第2期 2024-12-08】
  • pytorch离线安装步骤
  • 中阳动态分散投资策略:构建多元化投资组合的科学路径
  • 前端引入字体文件
  • 点云空洞的边界识别提取 pso-bp 神经网络的模型来修复点云空洞 附python代码
  • DataFrame to list(pandas框架转列表)
  • MySQL三大日志-Binlog
  • linux作 samba 服务端,linux windows文件互传,免账号密码
  • 底层理论基础(单片机)
  • Vue3组件封装技巧与心得