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

浙公网安备 33010602011771号