OOP 设计 - 许多对象每个都与其他对象的有限子集具有独特的交互

标签 oop polymorphism

如果 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 , grenadeplayer都应该实现一个通用接口(interface)来执行 RespondToEMP 方法。 .这样,如果您稍后决定其他 46 个对象中的一个可以被 EMP 击中,您将知道实现此接口(interface)。

关于OOP 设计 - 许多对象每个都与其他对象的有限子集具有独特的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15253783/

相关文章:

PHP OOP Mysql 查询

c++ - 多重继承和多态性

c++ - 同类容器、派生类、初始化列表和移动语义

delphi - 如何声明交叉引用的类类型?

Java内部类用于存储一个人的多个角色

c# - 哪种代码是更好的编程风格

c++ - 更改方法的保护级别是否被认为是好的做法?

java - 在 Java 中继承一个静态变量

php - 构造函数内部的逻辑

python - 为什么我们在python中的每个方法都需要对应的类函数?