我正在创建一个游戏,它要求游戏的某些部分与其他部分进行交互。这是我的声明。
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时进行操作。