Python进阶知识:整理3 -> 设计模式(单例模式、工厂模式)

1 单例模式

python 复制代码
# 单例模式:确保一个类只有一个实例,并提供一个全局访问点。
class Singleton:
    pass

st = Singleton()


"""
    在其它文件中import, 使用上述类时,无论实例化多少对象,得到对象id都是一样的,相当于实例化一个对象
    ---> 节省内存;节省创建对象的开销
"""

2 工厂模式

python 复制代码
# -- coding: utf-8 --
"""
    当需要大量创建一个类的实例的时候,可以使用工厂模式:
        即从原生的使用类的构造去创建对象的形式,迁移到基于工厂提供的方法去创建对象的形式
"""
"""
    优点: 1.大批量创建对象的时候有统一的入口,易于代码的维护
         2.当发生修改,仅需要修改工厂类的创建方法即可
         3.符合现实世界的模式,即有工厂来制作产品(对象)
"""


class Person:
    pass


class Worker(Person):
    pass


class Student(Person):
    pass


class Teacher(Person):
    pass


class PersonFactory:
    def get_person(self, p_type):
        if p_type == 'worker':
            return Worker()
        elif p_type == 'student':
            return Student()
        elif p_type == 'teacher':
            return Teacher()
        else:
            return None


pf = PersonFactory()
worker = pf.get_person('worker')
student = pf.get_person('student')
teacher = pf.get_person('teacher')

相关推荐
生信研究猿6 分钟前
第2题-大模型Attention模块开发
python
2401_871696527 分钟前
JavaScript中代码覆盖率Coverage在精简脚本中的应用
jvm·数据库·python
XiYang-DING10 分钟前
【Java EE】多线程(1)
java·python·java-ee
m0_7349497913 分钟前
Python GUI界面如何实现主题美化_引入ttk模块实现原生外观风格
jvm·数据库·python
光影少年15 分钟前
Python+LangGraph学习路线及发展前景
开发语言·人工智能·python·学习
m0_6784854520 分钟前
如何让导航栏的下落动画效果更慢?
jvm·数据库·python
qq_4327036622 分钟前
Pandas DataFrame 分组聚合中处理 JSON 列的高效方法
jvm·数据库·python
qq_4240985623 分钟前
MySQL高负载下查询中断怎么解决_增加系统内存与调整参数
jvm·数据库·python
2301_7735536224 分钟前
SQL中如何处理多维数据的查询:复合索引与SELECT编写
jvm·数据库·python
大江东去浪淘尽千古风流人物27 分钟前
【cuVSLAM】项目解析:一套偏工程实战的 GPU 紧耦合视觉惯性 SLAM
数据库·人工智能·python·机器学习·oracle