如果A类与B,C和D类中的每一个都有唯一的交互作用,那么交互的代码应该是A还是B,C和D?
我正在写一个小游戏,许多对象可以与其他对象进行独特的交互.例如,EMP点击sentry gun并禁用它.它也可能击中它grenade并引爆它,它也可以击中player并施加减速效果.
我的问题是,这个代码应该在EMP课程中,还是在所有其他课程中传播?我的直觉告诉我多态地做这个,所以我只是告诉每个班级处理它喜欢的EMP罢工,这将允许我添加更多项目并改变他们如何处理EMP而不改变EMP代码.
但是,EMP目前仅与我的50个对象中的大约4个进行交互,因此使用空的RespondToEMP()调用填充46个对象似乎是错误的.它似乎有点不直观,如果我决定删除EMP,我需要更改其他所有类,而EMP类本身最终会相当小.这也意味着如果我想改变EMP的行为方式,我需要查看所有不同的类来查找所有可能的用法.此外,如果EMP具有一些通用效果,例如爆炸,那么这种效果肯定会在EMP代码中,远离将要分发的所有其他效果.
我的想法是sentry gun,grenade并且player都应该实现一个强制执行该方法的通用接口RespondToEMP。这样,如果您稍后决定其他 46 个对象之一可以被 EMP 击中,您就会知道要实现此接口。