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

当前客户折扣计算Java设计是否引入了循环依赖?

关于该设计是否存在循环依赖的分析

结论:这个设计确实引入了循环依赖,具体依赖链条如下:

  • Customer类持有CustomerType枚举的实例,因此Customer依赖CustomerType
  • CustomerType枚举的每个实例都关联了对应的DiscountCalculatorFactory实现类对象,因此CustomerType依赖DiscountCalculatorFactory及其子类
  • DiscountCalculatorFactory的子类负责创建DiscountCalculator的子类实例,而DiscountCalculator基类(包括所有子类)都持有Customer实例,因此DiscountCalculator依赖Customer

最终形成了闭环依赖链:Customer → CustomerType → DiscountCalculatorFactory → DiscountCalculator → Customer

这种循环依赖在Java编译阶段通常不会直接报错,但会提升代码的耦合程度,后续修改、扩展逻辑时,需要同时考虑链条上的多个类,增加了维护成本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:52:38