Python设计模式-工厂模式(Factory)
工厂模式(Factory)
工厂用于创建其他对象,这些对象往往从属于一个相同的范围,并且在系统中扮演相同的角色。
工厂方法:定义一个用于创建对象的接口函数,可以控制实例化哪一个具体的类。
优点:创建对象时,调用者只需要根据定义好的接口,查询对象名即可,具体对象创建的过程由工厂完成。
缺点:有新的需要创建的对象时,需要增加具体的对象类和对应的工厂实现,维护起来比较麻烦。
典型例子:
- 不同模式的数据格式读写;
- 不同模式的数据库访问;
- 不同协议的服务器连接器;
示例
# 一个不同格式文件读取的例子
import json
import pickle
from abc import abstractmethod
class BaseFileHandler:
@abstractmethod
def load_from_fileobj(self, file, **kwargs):
pass
@abstractmethod
def dump_to_fileobj(self, obj, file, **kwargs):
pass
class JsonHandler(BaseFileHandler):
def load_from_fileobj(self, file):
return json.load(file)
def dump_to_fileobj(self, obj, file, **kwargs):
json.dump(obj, file, **kwargs)
class PickleHandler(BaseFileHandler):
def load_from_fileobj(self, file, **kwargs):
return pickle.load(file, **kwargs)
def dump_to_fileobj(self, obj, file, **kwargs):
kwargs.setdefault('protocol', 2)
pickle.dump(obj, file, **kwargs)
# 工厂模式接口函数
def get_file_handler(ext: str) -> BaseFileHandler:
handlers = {
'json': JsonHandler,
'pkl': PickleHandler
}
return handlers[ext]()
本文来自博客园,作者:坦先生的AI资料室,转载请注明原文链接:https://www.cnblogs.com/yushengchn/p/16478362.html
分类:
python设计模式系列
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南