SuperAPI AI 工具集

implement-calculator-pattern

通用与其它

查看项目

更新于 10-16 06:17

技能介绍

用途:在 Ruby 项目中实现基于变体(variant)的计算器模式,为客户端提供单一 API:Calculator::Factory.for(entity).calculate。工厂负责选择策略,未知变体由 NullService 安全兜底。

主要能力与组件:Factory 通过 SERVICE_MAP 分发到正确的服务类,未命中回退 NullService;BaseService 用 should_calculate? 做守卫并委托 compute_result;NullService 的 should_calculate? 恒为 false、compute_result 恒返回 nil,永不抛出异常;Concrete 服务覆写 should_calculate?(在 super 之上增加变体判断)与 compute_result。

必要用法:先写测试再实现,逐组件执行 RED/GREEN 循环,Factory、NullService 和各具体服务各自独立验证,不可合并。核心流程:1 创建 Factory(无合格上下文或未知变体则 NullService);2 创建 BaseService(calculate 在 should_calculate? 为真时委托 compute_result);3 创建 NullService;4 创建具体服务并始终在 should_calculate? 中调用 super;5 运行完整测试套件;6 确认 Factory.for(entity) 是唯一允许的访问路径。

文件结构示例:services/<calculator_name>/ 下含 factory.rb、base_service.rb、null_service.rb、standard_service.rb、premium_service.rb。

适用场景:定价计算器、折扣计算器、运费计算器等按 plan 变体分流的计算逻辑。

限制与注意:SERVICE_MAP 键必须与数据库存储值完全一致,拼写错误会导致静默回退 NullService;必须为未知/nil 变体编写测试;禁止直接实例化服务类,否则绕过 NullService 安全网;具体服务忘记调用 super 会丢失基础的 nil/存在性守卫。输出语言除特别要求外为英文。