我正在创建一个基于2D瓷砖的模拟游戏。我有一个2D网格方块数组,可以从许多不同的类和方法中访问和更改它们。是每次传递2D网格方块数组还是将其设为全局变量?哪种做法最好?我在想,创建一个只包含一组变量的类是否可行?所有类都可以继承它吗?这是好主意还是不好的想法?我对Java仍然很新,所以我还在学习很多!谢谢预先。Rel
您不应该以数据结构为设计思路。Java是一种面向对象的语言。尝试将问题看作交互的对象。这不是一个二维数组;这是一个Board对象。在问题中构建操作其状态的行为,并隐藏您选择了二维数组的事实。
我还没有完全解决Board的所有细节,但它会像这样开始:
public class Board
{
// This is what you're passing around now; Board hides it.
// Square is the abstraction of a position on the Board
private Square[][] grid;
public Board(int nRows, int nCols)
{
this.grid = new Square[nRows][];
for (int i = 0; i < this.grid[i].length; ++i)
{
this.grid[i] = new Square[nCols];
}
}
// Now add methods for adding Pieces to the Board, rules for moving them, etc.
}
在构造函数中传入它们并将其保存在成员变量中。
如果您从太多地方访问它们,则可能存在设计问题。
如果你确实需要,在包含网格的类(A)中将网格声明为公共的,然后静态导入A类(import static A;
)。这将使您能够与网格交互而无需扩展A类,至少是这样。
您的代码不应从太多地方访问网格。考虑重构您的代码以避免必须从各个地方操作网格。分离您的关注点。并且像您提到的那样使用继承绝对不是一个好主意。