当前位置: 首页 > news >正文

从红警中来学习工厂方法 vs. 抽象工厂

工厂方法 vs. 抽象工厂 (红色警戒版)

工厂方法 (Factory Method) - 单位的特殊状态转换

场景: 处理不同兵种单位转换到其“特殊形态”的逻辑。

  • 产品 (Product) - 单位状态

    • InfantryState (抽象产品:步兵状态)
      • DeployedState (具体产品:美国大兵的部署状态)
      • ChargingState (具体产品:磁暴步兵的充电状态)
  • 创建者 (Creator) - 步兵单位

    • Infantry (抽象创建者:步兵单位基类)
      • 包含工厂方法 createSpecialState()
    • GI (具体创建者:美国大兵)
      • 实现 createSpecialState() 返回 DeployedState
    • TeslaTrooper (具体创建者:磁暴步兵)
      • 实现 createSpecialState() 返回 ChargingState
  • 扩展任务:增加“飞行兵”

    • 新增FlyingState (产品类), RocketTrooper (创建者类)。
    • 修改:无。

核心思想: 一个创建者(GI)负责创建一个与之对应的产品(DeployedState)。扩展时只需增加新的创建者和产品。


抽象工厂 (Abstract Factory) - 阵营的建筑和单位生产

场景: 确保玩家选择一个阵营后,所有生产出的建筑和单位都属于该阵营。

  • 抽象工厂 (Abstract Factory)

    • FactionBase (阵营基地接口)
      • 包含 create_barracks()create_vehicle_factory() 方法。
  • 具体工厂 (Concrete Factory)

    • AlliedBase (盟军基地)
    • SovietBase (苏军基地)
  • 产品家族 (Product Family)

    • 产品A (兵营)
      • Barracks (抽象产品)
      • AlliedBarracks (具体产品 - 盟军兵营)
      • SovietBarracks (具体产品 - 苏军兵营)
    • 产品B (战车工厂)
      • VehicleFactory (抽象产品)
      • AlliedWarFactory (具体产品 - 盟军战车工厂)
      • SovietWarFactory (具体产品 - 苏军战车工厂)
  • 扩展任务:增加“尤里”阵营

    • 新增YuriBase (工厂), YuriBarracks (产品A), YuriWarFactory (产品B)。
    • 修改:无。

核心思想: 一个工厂(AlliedBase)负责创建一整套相互关联的产品(AlliedBarracks, AlliedWarFactory),保证了产品家族的一致性。

http://www.dtcms.com/a/332012.html

相关文章:

  • C# 异步编程:提高应用程序效率的关键
  • A股大盘数据-20250814 分析
  • mysql如何降级
  • IDEA 插件 Trae AI 全攻略
  • 20道前端性能优化面试题精华
  • 数仓分层架构设计全解析:从理论到实践的深度思考
  • 多模态大模型技术框架汇总
  • cursor中的设置C++无法跳转
  • CMake中add_definitions()的使用指南
  • geoserver sql视图调用Postgis自定义函数问题记录
  • 五种IO模型与非阻塞IO
  • 双椒派E2000D网络故障排查指南
  • T05_卷积神经网络
  • 许政南辅警---辅警面试等待2小时,面试十分钟
  • 什么是主成分分析(PCA)和数据降维
  • 【22-决策树】
  • 若依前后端分离版学习笔记(十)——数据权限
  • 机器人伴侣的智能升级:Deepoc具身智能模型如何重塑成人伴侣体验
  • Linux 内核参数:drop_caches
  • buildroot 简单介绍
  • 搭建局域网yum源仓库全流程
  • C/C++ 进阶:深入解析 GCC:从源码到可执行程序的魔法四步曲
  • QT中ARGB32转ARGB4444优化4K图像性能的实现方案(完整源码)
  • 从理论到落地:分布式事务全解析(原理 + 方案 + 避坑指南)
  • ACCESS多个时间段查询,只取整点,30分数据
  • 第1节:多模态大模型入门(多模态大模型基础教程)
  • 二、Java方法对应练习
  • 护照监伪的方式
  • 为什么Integer缓存-128 ~ 127
  • Linux常用命令(下)