我正在创建一个游戏,它要求游戏的某些部分与其他部分进行交互。这是我的声明。

world = new World();
player = new Player(world);
touchpad = new Touchpad(player);
background = new Background(player);



player需要来自world的信息才能进行处理
碰撞(修改玩家的位置)。
touchpad需要玩家的参考
控制/修改其位置。
background需要以下信息
播放器的位置,以便根据其位置更改颜色。


我不确定这是否是正确的方法。我读过一些东西,我的声明不应该依赖于上面写的内容,而是应该可以随意移动并仍然起作用。它是否正确?

我不确定到底要去哪里。是否应该将某些类中包含的某些信息放在其他地方?我是否应该创建更多的类来进一步分解当前的内容?我这样做是完全错误的,应该采取其他方法吗?

最佳答案

我读过一些东西,我的声明不应该依赖于上面写的内容,而是应该可以随意移动并仍然起作用。


听起来好像在为loose coupling争论。通常这很好。

例如,该TouchPad类只能用于移动Player

public class TouchPad {
   public TouchPad(Player player) {
   }
}


TouchPad可以控制类的任何对象实现Controllable的位置。

public interface Controllable {
   void move(int x, int y);
}

public class TouchPad {
   public TouchPad(Controllable player) {
   }
}

public class Player implements Controllable {


这比较干净,因为它限制了Player可以使用的TouchPad功能。而且TouchPad不知道它正在控制Player

您可以采用两种方法,首先编写代码,然后“重构”它,使其更加宽松,或者使您的方法更加宽松。默认情况下,您倾向于根据经验和进行unit tests / test driven developement时进行操作。

10-05 18:36