我正在编写一个小游戏,我有两个课程:Board
和Piece
. Board
(到目前为止)有一个Piece
可以在Board
.
public class Board {
private Piece piece_;
private int width, height;
...
movePieceDown() {
piece_.moveTo(this, 1, 2);
}
}
public class Piece {
public boolean moveTo(Board board, int x, int y) {
// move piece to new location (x,y)
// return true if successful
}
}
piece_.moveTo(this, 1, 2);
如果我通过参考 Board是否是不好的方法,这样如果 Board 上没有障碍物,Piece 可以移动到新位置?如果没有传递对 Board 的引用,Piece 不知道新位置是否有障碍物,或者它是否超出了 Board 边界。
在我看来,每个对象都应该只关心自己:Piece 应该移动到新位置,Board 应该担心它是否合法移动,但是我发布的这个示例代码更有意义并简化了事情。
TL;DR:我是在将对象本身传递给字段的方法时违反了一些 OOP 准则,还是一些普通的 OOP 习语?预先感谢您向我澄清这一点。