我目前正在做一个项目Unity。简而言之,这是一款关于太空的游戏,玩家控制一颗行星“绕”其恒星运行,并保护其免受各种危险。
在我的项目中,我有一个抽象类AbstractMovementSystem,其中的类PlanetMovementSystem和MoveToTargetSystem.这样做是因为在上面的类中仍然会有方法Move和字段_maxSpeed,_currentSpeed并且创建抽象类可以让您遵守该原则DRY。
这些类仅负责将对象“移动”到新位置。在这种情况下,这个新位置的计算发生在实现该接口的PlanetMovementCalc和类中。这就是问题开始的地方:MoveToTargetCalcIMoveCalculator
要计算新位置,MoveToTargetCalc需要两个向量和一个速度,以及 PlanetMovementCalc-input以 类型值的形式表示float轨道半径和速度。正如您可以想象的,如果我添加两种方法来计算 中的新位置IMoveCalculator,那么我将必须实现为MoveToTargetCalc, 设计的方法,PlanetMovementCalc反之亦然。什么PlanetMovementCalc,什么MoveToTargetCalc——这当然是没有必要的。如果你将方法实现为空,那么这将违反里氏原则,而如果你以正常方式实现方法,那么它只是一堆不会被使用的额外代码。
问题:该怎么办?一般来说,从项目中删除接口,因为PlanetMovementCalc根据 MoveToTargetCalc设计它们不应该互换?或者说使用接口有什么意义吗?如果是,那么如何正确使用它们呢?
(我为这个愚蠢的问题道歉,我只是没有太多经验,而且我无法“记录”自己)