假设有一个简单的游戏,我有一个名为 Player
的类,其中包含玩家拥有的所有信息,例如name
, xPosition
, yPosition
, width
, height
等
Player
类还具有与其关联的方法,这些方法描述了 Player
的含义。可以做,例如move()
, draw()
等
在游戏中,我需要能够知道何时出现 Player
与游戏中的任何其他物体发生碰撞,例如墙壁、天花板或其他世界物体。
我可以通过两种方式解决这个问题:
创建一个类似 CollisionDetecter
的类有一个类似 detectCollision()
的方法。在 Player
中包含此类的实例上课并调用 detectCollision()
适当时的方法
理由:
检测碰撞实际上并不是
Player
的固有属性。就像xPosition
,yPosition
或name
是,所以它不属于此类。Player
中的困惑更少类(class)。 (这算不算?)
创建类似 detectCollision()
的方法在 Player
检查 Player
是否存在的类击中了任何东西
理由:
检测碰撞是
Player
的事情。这样做detectCollision()
方法应该直接在Player
中类(class)。只有玩家需要能够检测碰撞,那么为什么我应该为此创建另一个只有 1 个方法的整个类呢?为什么不将其作为方法包含在
Player
中类?
我觉得我总是在这样的辩论中挣扎。
哪种方法最合适?为什么?这两者都不好吗?我应该做点别的吗?
最佳答案
一般情况:-
有时,最好从玩家类别开始,看看会产生什么后果。重构最终是你的 friend ,如果你发现你正在编写的方法需要与 Player 并不真正相关的东西,那么你就开始制定新的设计。
具体:-
也许玩家是一个游戏对象,而碰撞检测是一个通用概念,用于确定游戏对象之间的碰撞。
也许玩家并不是真正的类,也许玩家只是一个具有移动策略的游戏对象,即玩家实际上是由游戏的更基本方面组成的。
关于java - 有时我不知道某些方法属于哪个类。我究竟做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38625990/