用工厂函数简化redis配置
- 软件开发
- 2025-09-14 15:21:02

工厂函数(Factory Function)不同于构造函数,工厂函数就是一个普通函数,通常用于创建对象或实例。它的核心思想是通过一个函数来封装对象的创建逻辑,而不是直接使用类的构造函数。工厂函数可以根据输入参数动态地决定创建哪种类型的对象,从而提供更高的灵活性和可扩展性。
工厂函数的特点封装创建逻辑:工厂函数隐藏了对象的创建细节,使得调用者不需要关心对象是如何被创建的。
动态创建对象:可以根据输入参数动态决定创建哪种类型的对象。
不依赖于类的构造函数:工厂函数通常不直接使用 new 关键字,而是通过内部逻辑来创建对象。
可扩展性强:在不修改现有代码的情况下,可以轻松添加新的对象类型。
工厂函数的用途工厂函数常用于以下场景:
当对象的创建逻辑复杂时,可以将创建逻辑封装到工厂函数中,使代码更清晰。
当需要根据不同的条件创建不同类型的对象时,工厂函数可以根据输入参数动态选择对象类型。
在某些编程语言中,工厂函数可以用于避免直接使用类的构造函数,从而实现更灵活的设计模式。
举例说明:
在某个项目中有大量的redis,一旦Redis服务器发生了变化,比如改了IP地址,项目的每个地方需要配置特别麻烦。所以,就使用了工厂函数。
在database.py中配置:
REDIS_CONFIG = { "host": getenv("REDIS_HOST", "127.0.0.1"), "port": int(getenv("REDIS_PORT", "6379")), "db": int(getenv("REDIS_DB", "0")), "password": getenv("REDIS_PASSWORD", None), "encoding": "utf8", "pool_minsize": int(getenv("REDIS_POOL_MINSIZE", "1")), "pool_maxsize": int(getenv("REDIS_POOL_MAXSIZE", "10")), "timeout": int(getenv("REDIS_TIMEOUT", "5")) } def get_redis_client(decode_responses: bool = True) -> redis.Redis: """获取Redis客户端实例 Args: decode_responses: 是否自动解码响应数据为字符串 Returns: Redis: Redis客户端实例 """ return redis.Redis( host=getenv("REDIS_HOST", "172.23.151.30"), port=int(getenv("REDIS_PORT", "6379")), db=int(getenv("REDIS_DB", "0")), password=getenv("REDIS_PASSWORD", ""), socket_timeout=int(getenv("REDIS_TIMEOUT", "5")), socket_connect_timeout=int(getenv("REDIS_TIMEOUT", "5")), pool_minsize=int(getenv("REDIS_POOL_MINSIZE", "1")), pool_maxsize=int(getenv("REDIS_POOL_MAXSIZE", "10")), decode_responses=decode_responses )在各个文件中生成redis_client :
from config.database import get_redis_client # Redis 客户端配置 redis_client = get_redis_client(decode_responses=True)或者类中直接初始化:
from config.database import get_redis_client def __init__(self): self.model = RecommendationModel() self.redis_client = get_redis_client()后面直接使用即可:
用工厂函数简化redis配置由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“用工厂函数简化redis配置”