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

爬虫系统启停流程能否作为用例?架构设计疑问

你的封装做法完全合理,无需被刻板的用例定义束缚

首先要明确:用例(Use Case)的核心价值是封装达成特定目标的完整流程,它最初是需求分析领域的概念,但在实际工程开发中,早已突破“必须由外部系统触发”的刻板限制,演化成一种代码组织方式——只要能让逻辑更集中、代码更易维护,就值得用。

针对你的场景,具体分析如下:

1. 系统级启动/停止流程完全适合封装为用例

submitUserOrder、getAllProducts这类是业务用例,触发源多为外部用户或系统,但你的爬虫系统启动/停止属于系统级核心操作,本身就是一个完整的目标流程:

  • 启动流程包含拉取配置、运行爬虫、启动Bot、发送通知/邮件,这些步骤紧密关联,聚合到start-app.use-case后,能避免start.ts逻辑臃肿,后续修改启动逻辑只需改动这个单元,符合单一职责原则。
  • 停止流程同理,把停止Bot、爬虫、发送收尾通知的逻辑封装到stop-app.use-case,统一管理系统关闭的所有收尾操作,避免逻辑分散在多个文件中,便于测试和后续扩展。

2. 不用纠结“外部触发”的限制

用例的触发源从来不是固定的:

  • 业务用例通常由外部触发,但系统级用例可以由内部钩子(比如进程启动/停止事件)、定时任务、甚至代码内部调用触发。
  • 工程实践中,判断封装是否合理的核心标准是是否提升了代码的可读性、可维护性和可测试性,而不是是否符合某个原始定义的细节。

3. 你的做法恰恰是良好的代码组织实践

把复杂流程封装为独立的用例单元,本质上是对流程的解耦和聚合:

  • 每个用例只负责完成一个明确的目标(启动系统/停止系统),逻辑边界清晰。
  • 后续如果要给启动流程加新步骤(比如新增监控告警初始化),直接在start-app.use-case里修改即可,不会影响其他模块。

内容的提问来源于stack exchange,提问作者eugenedrvnk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 12:32:28