python -【十】单例模式与工厂模式

一、单例模式

全局创建的实例只有一个,被称为单例

新建一个 StrTools.py 文件

python 复制代码
class StrTools:

    def revers(self, param):
        return param[::-1]


# 构建一个对象
str_tools = StrTools()

新建一个 test_str_tools.py 文件

python 复制代码
# 引入 StrTools 中定义的变量
from StrTools import str_tools

# 引入单例
s1 = str_tools
s2 = str_tools

print(f's1.id={id(s1)}')  # s1.id=1858205996944
print(f's2.id={id(s2)}')  # s2.id=1858205996944

"""
输出的两个对象 id 相同,表示两个对象是同一个
"""

二、工厂模式

通过工厂方法,创建对象,无需手动创建

python 复制代码
# 抽象类
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 == 'w':
            return Worker()
        elif p_type == 's':
            return Student()
        else:
            return Teacher()

# 创建工厂实例
f = PersonFactory()
worker = f.get_person('w')
student = f.get_person('s')
teacher = f.get_person('t')
相关推荐
夜雪一千1 分钟前
Python ASR音频转文本 完整代码示例
python
JarmanYuo12 分钟前
YOLO 涨点研究(十二):具身 CV 进阶篇——Sim2Real 域随机化与真机部署
人工智能·pytorch·python·yolo·计算机视觉
小蒜学长19 分钟前
基于Python的微博热搜话题可视化分析系统的设计与实现(代码+数据库+LW)
后端·python·django·数据可视化·情感分析·微博热搜
梦帮科技24 分钟前
从提示词到可复现音乐工作流:RNOISE 2.0 的 Prompt Engineering 架构
人工智能·python·mysql·ci/cd·架构·node.js·numpy
飞Link26 分钟前
【Numpy】 第三部分:矩阵运算与线性代数(计算篇)
python·numpy
电商API_1800790524726 分钟前
电商平台数据分析实战_帖子
开发语言·爬虫·python·数据采集·京东
带多刺的玫瑰42 分钟前
Leecode#35刷题之搜索插入位置
java·python·算法
QQ14220784491 小时前
IIS + wfastcgi 部署 Flask 应用实战:从连续 500 到稳定 200 的完整踩坑实录
python
WiKiLeaks_successor1 小时前
Scipy库里的众数函数不严谨,我把它重构了。
python·scipy
傻啦嘿哟1 小时前
房产数据对比爬虫:同时爬取链家+贝壳+安居客,做房价横向对比
python