php工厂模式的核心是解耦创建与使用,要求定义统一抽象层、工厂封装创建逻辑、遵循开闭原则、命名与返回类型规范清晰。

PHP工厂模式的实现规范不是一套硬性标准,而是围绕“解耦创建与使用”这一核心目标形成的实践共识。它强调结构清晰、职责分明、便于扩展,不追求形式统一,但关键环节有明确逻辑要求。
必须定义抽象产品接口或基类
所有具体产品类需统一继承或实现同一抽象层,这是工厂能统一处理的前提。
- 用
interface定义公共行为契约(推荐),比如Shape::draw()、Payment::process() - 或用
abstract class定义共用属性和抽象方法,子类强制实现差异逻辑 - 避免直接操作具体类名——客户端只依赖抽象,不感知
PayPal还是WeChatPay
工厂角色需封装创建逻辑,且不暴露具体类名
工厂不是简单new的集合,而是承担判断、组装、配置等职责的中间层。
- 参数驱动型:根据字符串(如
"sms"、"email")或配置项决定实例化哪个类 - 配置驱动型:从
.env或数据库读取类型标识,动态加载对应实现 - 禁止在客户端写
new SmsNotifier()——所有实例化必须经由工厂出口
遵循开闭原则,新增产品不改现有工厂代码
这是衡量工厂是否“合格”的关键标尺。规范要求扩展时只增不改。
- 简单工厂:新增产品需修改
switch或if分支 → 不满足开闭,仅适合小型项目 - 工厂方法:每新增一类产品,只需新增一个具体工厂类(如
AlipayFactory),不碰原有工厂基类 - 抽象工厂:新增产品族(如整套海外支付组件),只需新增一组工厂类,不影响已有族
命名与调用需体现语义清晰、职责单一
规范也体现在代码可读性和协作约定上,降低团队理解成本。
- 工厂类名建议含
Factory后缀,如UserFactory、LogFactory - 创建方法名常用
createXxx()或makeXxx(),避免笼统的getInstance() - 返回类型应声明为抽象类型(如
: NotifierInterface),而非具体类
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











