Python工厂模式实现思路_对象创建优化

3次阅读

工厂模式核心是将对象创建交由工厂处理以降低耦合、提升可扩展性;包含简单工厂(参数驱动)、工厂方法(子类决定实例化)和抽象工厂(创建产品族),选择取决于变化维度与一致性需求。

Python工厂模式实现思路_对象创建优化

工厂模式的核心是把对象的创建过程从使用方剥离,交由专门的“工厂”来处理,从而降低耦合、提升可扩展性。它不直接 new 实例,而是通过统一接口获取对象,让新增类型只需改工厂内部逻辑,不牵连业务代码。

简单工厂:一个函数或类封装创建逻辑

适合类型不多、变化不频繁的场景。用一个函数或静态方法,根据参数返回不同子类实例。

  • 定义基类(如 Payment)声明通用方法(如 pay()
  • 实现多个子类(AlipayWechatPayCardPay
  • 编写工厂函数(如 create_payment(method: str) -> Payment),内部用 if/elif 或字典映射返回对应实例
  • 调用方只和工厂与基类交互,完全不知道具体子类名

工厂方法:让子类决定实例化哪个类

当不同产品族需要各自独立的创建流程时适用。抽象工厂类定义创建方法,由具体子工厂实现。

  • 定义抽象工厂类(PaymentFactory),声明抽象方法 create_payment()
  • 为每种支付方式写具体工厂(AlipayFactoryWechatFactory),各自实现创建逻辑
  • 客户端持有工厂引用,调用 factory.create_payment() 得到对象,无需关心构造细节
  • 新增支付方式?只需加子工厂类 + 子产品类,不修改原有工厂或客户端

抽象工厂:创建“产品族”,而非单个产品

适用于系统需同时创建一组相关或依赖的对象(如不同操作系统的 ui 组件:Button、checkbox)。

立即学习Python免费学习笔记(深入)”;

  • 定义抽象工厂(GUIFactory)和多组抽象产品(ButtonCheckbox
  • 实现具体工厂(WinFactoryMacFactory),每个都提供整套产品实例
  • 客户端通过工厂统一获取配套组件,确保风格/行为一致,避免混搭出错
  • 扩展新平台?只加一组具体工厂 + 对应产品实现,零侵入现有代码

选哪种取决于变化维度:类型少用简单工厂;创建逻辑差异大、需解耦工厂与产品用工厂方法;涉及多产品协作且需保证一致性,上抽象工厂。关键是把 new 的位置收拢,让对象生成变得可配置、可替换、可测试。

text=ZqhQzanResources