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

1 单例模式

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

st = Singleton()


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

2 工厂模式

# -- 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')

相关推荐

  1. Python模式工厂模式

    2024-01-18 07:46:04       34 阅读
  2. 常用的设计模式模式工厂模式

    2024-01-18 07:46:04       40 阅读
  3. 设计模式】:模式

    2024-01-18 07:46:04       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-18 07:46:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-18 07:46:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-18 07:46:04       82 阅读
  4. Python语言-面向对象

    2024-01-18 07:46:04       91 阅读

热门阅读

  1. docker 安装mysql 并支持远程访问

    2024-01-18 07:46:04       55 阅读
  2. flask 与小程序 菜品详情和分享功能

    2024-01-18 07:46:04       56 阅读
  3. SaaS应用框架对比:Spring Boot vs Flask vs FastAPI

    2024-01-18 07:46:04       56 阅读
  4. Hive之set参数大全-9

    2024-01-18 07:46:04       45 阅读
  5. linux设置定时任务

    2024-01-18 07:46:04       56 阅读
  6. ChatGPT 股市知识问答

    2024-01-18 07:46:04       51 阅读
  7. ChatGPT提示词

    2024-01-18 07:46:04       67 阅读
  8. node.js常用命令

    2024-01-18 07:46:04       56 阅读
  9. 【第一章 引言】

    2024-01-18 07:46:04       51 阅读
  10. NLP任务中常用的损失函数

    2024-01-18 07:46:04       54 阅读