小编h00*_*00s的帖子

将对象本身(this)传递给字段的方法是一种糟糕的方法吗?

我正在编写一个小游戏,我有两个类:BoardPiece.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习惯用法?提前谢谢你向我澄清这一点.

java oop

5
推荐指数
1
解决办法
1535
查看次数

标签 统计

java ×1

oop ×1