PHP工厂模式适合什么场景

wen PHP项目 1

PHP工厂模式适合的场景

工厂模式是一种创建型设计模式,在以下场景中特别适用:

PHP工厂模式适合什么场景

对象创建逻辑复杂

  • 场景示例:电商系统创建不同类型的订单(普通订单、团购订单、秒杀订单)
  • 优势:封装复杂的初始化逻辑,避免调用方直接处理对象创建细节

需要根据条件动态选择具体类

  • 场景示例:支付系统根据用户选择的支付方式(支付宝、微信、银联)创建对应的支付处理器
  • 示例代码
    class PaymentFactory {
      public static function create(string $type): PaymentInterface {
          return match($type) {
              'alipay' => new AlipayPayment(),
              'wechat' => new WechatPayment(),
              'unionpay' => new UnionpayPayment(),
              default => throw new \InvalidArgumentException("不支持支付方式")
          };
      }
    }

希望解耦客户端与具体类

  • 场景示例:插件系统中的扩展点创建
  • 优势:客户端只需依赖抽象接口,不直接依赖具体实现类

需要集中管理对象创建

  • 场景示例:数据库连接的创建、缓存实例的管理
  • 优势:统一管理对象的创建过程,便于修改和维护

创建对象时需要进行统一配置

  • 场景示例:日志记录器创建时需要统一设置日志级别、格式等
  • 优势:在工厂中集中配置,避免重复代码

对象创建需要缓存或池化

  • 场景示例:数据库连接池、线程池
  • 优势:工厂可以管理对象的生命周期,实现对象复用

不适用场景:

  • 简单对象创建:直接 new 即可,过度设计增加复杂性
  • 对象类型不变或极少变化:使用工厂模式价值有限
  • 小型应用:引入额外抽象层可能得不偿失

实战建议:

  1. 当发现代码中多处出现 if/switch 判断创建不同类型对象时,考虑引入工厂模式
  2. 结合依赖注入容器使用效果更佳(如 Laravel 的容器底层就大量使用工厂思想)
  3. 简单工厂、工厂方法、抽象工厂根据复杂程度选择适合版本

抱歉,评论功能暂时关闭!