我正在编写一个小游戏,我有两个类: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
}
}
Run Code Online (Sandbox Code Playgroud)
如果我piece_.moveTo(this, 1, 2);通过参考董事会的话,这是不好的方法,如果船上没有障碍,那么Piece可以搬到新的位置?在没有通过参考董事会的情况下,Piece不知道新位置是否存在障碍或是否超出董事会边界.
在我看来,每个对象都应该只关心自己:片段应该移动到新位置,如果合法移动,董事会应该担心,但是我发布的这个示例代码更有意义并简化了事情.
TL; DR:我打破了一些OOP指南,将对象本身传递给了一个字段的方法,还是一些正常的OOP习惯用法?提前谢谢你向我澄清这一点.