如果类 A 与类 B、C 和 D 中的每一个都有唯一的交互,那么交互的代码应该在 A 中还是在 B、C 和 D 中?
我正在编写一个小游戏,其中许多对象可以与其他对象进行独特的交互。例如,一个EMP
击中 asentry gun
并禁用它。它也可以击中 agrenade
并引爆它,它也可以击中 aplayer
并施加减速效果。
我的问题是,这段代码应该放在 EMP 类中,还是分散在所有其他类中?我的直觉告诉我要多态地执行此操作,以便我只需告诉每个类处理它喜欢的 EMP 罢工,这将允许我添加更多项目并更改它们处理 EMP 的方式,而无需更改 EMP 代码。
但是,EMP 目前只与我的 50 个对象中的大约 4 个交互,因此用空的 RespondToEMP() 调用填充 46 个对象似乎是错误的。这似乎也有点不直观,如果我决定删除 EMP,我需要更改所有其他类,而 EMP 类本身最终会变得非常小。这也意味着如果我想改变 EMP 的行为方式,我需要查看所有不同的类以找到所有可能的用法。此外,如果 EMP 有一些通用效果,例如爆炸,那么这种效果肯定会在 EMP 代码中,远离所有其他将分发的效果。