![](https://et-framework.cn/assets/files/2024-06-07/1717749201-365834-isvuifb-5nqiu0re0ur.png)
ScanComponent 为 公共组件,用于处理各种战斗实体的扫描逻辑,MagicalGirl_Devil_BattleComponent 为魔法少女的战斗组件,在其初始化的时候调用了 ScanComponent 的 AddScanNode 方法去添加扫描点,但是在 ScanComponent 中又需要调用 MagicalGirl_Devil_BattleComponent 中的方法处理逻辑,这样就形成了环形依赖,如下图旧逻辑。
![](https://et-framework.cn/assets/files/2024-06-07/1717749522-203520-6abwtddg1h-v1ygiqm.png)
这里 ScanComponent 不应该知道 MagicalGirl_Devil_BattleComponet 的存在,显然需要改成多态分发的结构,这样既符合代码规范又避免了环形依赖,之后添加新的类型也不需要在 ScanComponent 里增加 Switch 的判断的数量。
![](https://et-framework.cn/assets/files/2024-06-07/1717749906-10886-ab-at-a2ytlo-6qq7n2zc0.png)
![](https://et-framework.cn/assets/files/2024-06-07/1717749916-522332-5yhez6ofk4nx-g83i0.png)
![](https://et-framework.cn/assets/files/2024-06-07/1717749921-683274-2v07jy4rptjq0wdqmt.png)
这样修改后就漂亮多了😋