工程模式,简单工厂,抽象工厂,创建者模式对比说明

以下是四种创建型设计模式的对比表格,从核心思想、结构、适用场景、优缺点等维度进行对比:

对比维度简单工厂模式工厂方法模式抽象工厂模式创建者模式(Builder)
核心思想集中创建单一类型对象延迟到子类创建对象创建一系列相关对象分步骤构建复杂对象
结构复杂度★☆☆(简单)★★☆(中等)★★★(复杂)★★★(复杂)
工厂角色单一工厂类抽象工厂+具体工厂子类抽象工厂+具体工厂实现指导者(Director)+建造者(Builder)
产品扩展性需修改工厂类(违反OCP)扩展新工厂子类(符合OCP)需修改抽象工厂(部分违反OCP)灵活扩展,不影响现有代码
产品关联性无关联无关联强关联(产品族)可组合不同部件
典型场景简单对象创建需要扩展的产品家族跨平台组件库复杂对象构造(如LOL角色装备)
客户端耦合度高(直接依赖工厂)中(依赖抽象工厂)中(依赖抽象工厂)低(通过Director解耦)
核心接口createProduct(type)Product createProduct()createProductA()createProductB()buildPartX()getResult()
典型代码结构switch-case分支模板方法模式多个工厂方法组合链式调用+步骤分解
设计原则遵循违反开闭原则遵循开闭原则部分违反开闭原则完全遵循开闭原则
经典案例日志系统(DEBUG/INFO/ERROR)数据库驱动(MySQL/Oracle)跨平台UI组件(Windows/Mac)文档生成器(PDF/HTML格式)

模式对比总结:

  1. 简单工厂
    • 优点:实现简单,适合简单场景
    • 缺点:违反开闭原则,新增产品需修改工厂
    • 适用:产品类型较少且稳定的场景
  2. 工厂方法
    • 优点:符合开闭原则,扩展性好
    • 缺点:增加产品需新增工厂类
    • 适用:需要灵活扩展产品家族的场景
  3. 抽象工厂
    • 优点:管理产品族,保持产品一致性
    • 缺点:新增产品族需修改工厂接口
    • 适用:需要跨平台/跨主题组件的场景
  4. 创建者模式
    • 优点:解耦构造过程与表示,支持多配置
    • 缺点:代码量增加,需要维护Builder类
    • 适用:构建复杂对象(如LOL英雄技能组合、汽车组装)

模式演进关系:

简单工厂 → 工厂方法(解决扩展性问题)
↓
抽象工厂(解决产品族问题)
↓
创建者模式(解决复杂构造流程问题)

根据具体场景选择模式:

  • 简单对象创建 → 简单工厂
  • 需要扩展的产品线 → 工厂方法
  • 跨平台组件 → 抽象工厂
  • 复杂对象构造 → 创建者模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值