私は小さなゲームをプログラミングしており、2 つのクラスがあります: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 への参照を渡さないと、Piece は新しい場所に障害物があるのか、それとも Board の境界から外れているのかを知りません。
私の意見では、すべてのオブジェクトは自分自身だけを心配する必要があります。ピースは新しい場所に移動し、ボードはそれが合法的な移動かどうかを心配する必要がありますが、私が投稿したこのサンプルコードはより理にかなっていて物事を簡素化します.
TL;DR: オブジェクト自体をフィールドのメソッドに渡すことで OOP ガイドラインに違反していますか、それとも通常の OOP イディオムですか? これを私に明確にしていただきありがとうございます。