You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在NestJS+TypeScript微服务中用嵌套策略模式优化多层if逻辑

基于策略模式重构微服务的Payload处理逻辑

我需要在一个仅负责接收Payload、验证Payload、适配Payload并写入数据库的微服务中应用策略模式。输入Payload包含origin、context、action三个核心字段,规则如下:

  • origin: { food, non-food }
  • context: { cart, order, catalog }
  • actionCart: { getCart, addItemCart, removeItemCart }
  • actionOrder: { getOrder, createOrder, getHistory }
  • actionCatalog: { getCatalog }
  • data: 原始Payload数据

核心逻辑是:origin决定可用的context范围,context决定可用的action类型,不同action对应不同的Payload适配方法,最终将适配后的数据写入对应数据库。

目前我用嵌套if的方式实现了这个逻辑,但代码冗余且难以维护,示例如下:

if (food) {
  if (context1) {
    // 该context下所有操作写入数据库context1
    if (action1) {
      // 组装特定Payload并写入数据库
    }
    if (action2) {
      // 组装特定Payload并写入数据库
    }
    if (action3) {
      // 组装特定Payload并写入数据库
    }
  }

  if (context2) {
    // 该context下所有操作写入数据库context2
    if (action1) {
      // 组装特定Payload并写入数据库
    }
    if (action2) {
      // 组装特定Payload并写入数据库
    }
    if (action3) {
      // 组装特定Payload并写入数据库
    }
  }

  if (context3) {
    // 该context下所有操作写入数据库context3
    if (action1) {
      // 组装特定Payload并写入数据库
    }
    if (action2) {
      // 组装特定Payload并写入数据库
    }
    if (action3) {
      // 组装特定Payload并写入数据库
    }
  }
}

if (non-food) {
  if (context1) {
    // 该context下所有操作写入数据库context1
    if (action1) {
      // 组装特定Payload并写入数据库
    }
    if (action2) {
      // 组装特定Payload并写入数据库
    }
    if (action3) {
      // 组装特定Payload并写入数据库
    }
  }

  if (context2) {
    // 该context下所有操作写入数据库context2
    if (action1) {
      // 组装特定Payload并写入数据库
    }
    if (action2) {
      // 组装特定Payload并写入数据库
    }
    if (action3) {
      // 组装特定Payload并写入数据库
    }
  }

  if (context3) {
    // 该context下所有操作写入数据库context3
    if (action1) {
      // 组装特定Payload并写入数据库
    }
    if (action2) {
      // 组装特定Payload并写入数据库
    }
    if (action3) {
      // 组装特定Payload并写入数据库
    }
  }
}

我考虑过给origin、context、action每个层级单独应用策略模式,但感觉这种方案不够理想,希望能得到更合适的重构方案。


内容的提问来源于stack exchange,提问作者Miguel Sodré

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 07:36:17