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')
相关推荐
热心不起来的市民小周37 分钟前
基于 Flask 和 MySQL 的期货数据分析系统
python·mysql·flask
万粉变现经纪人1 小时前
如何解决pip安装报错ModuleNotFoundError: No module named ‘scikit-learn’问题
人工智能·python·plotly·pycharm·flask·scikit-learn·pip
西猫雷婶1 小时前
python学智能算法(三十一)|SVM-Slater条件理解
人工智能·python·算法·机器学习·支持向量机
Warren981 小时前
Java泛型
java·开发语言·windows·笔记·python·spring·maven
仪器科学与传感技术博士1 小时前
python:以支持向量机(SVM)为例,通过调整正则化参数C和核函数类型来控制欠拟合和过拟合
开发语言·python·算法·机器学习·支持向量机·过拟合·欠拟合
站大爷IP1 小时前
Python实现Word转PDF全攻略:从入门到实战
python
大耳朵秃秃2 小时前
使用 uv 来作为 python 的包管理工具
python
AIGC包拥它2 小时前
检索召回率优化探究二:基于 LangChain 0.3集成 Milvus 2.5向量数据库构建的智能问答系统
人工智能·python·langchain·软件工程·个人开发·milvus