在OOP的良好实践中,我试图将我的一些方法分成两个类(不是主类)。
这两个类都需要这个特定的2D数组,以便正确执行程序的功能:
private char [][] board = new char[7][8];
我不确定如何在一个类中声明它并且能够在下面的类中正确访问它,以便按预期执行功能。
public class DisplayBoard {
public void printBoard(){
for(int i=1; i<board.length; i++){
for(int j=0; j<board[i].length-1; j++){
if(board[i][j] != '\0'){
System.out.print("| " + board[i][j] + " ");
}
else{
System.out.print("| ");
}
}
System.out.println("|");
}
System.out.println(" 1 2 3 4 5 6 7");
}
}
我的问题是如何在一个类中编写/重写此数组的声明,以便可以在两个类中访问它?
其他类的部分代码如下
public class Board {
public void placeCounter(char player, int move){
boolean placed = false;
for(int i=board.length-1; i>=0; i--) {
if(!placed) {
if(board[i][move -1 ] == '\0') {
board[i][move -1] = player;
placed = true;
}
}
}
}
}
答案 0 :(得分:1)
看看你提到的两个类,看起来你有一个Board类,其职责是创建和维护实际的板配置(在这种情况下,位置)和其他类,其职责是只以特定格式显示
从设计的角度来看,BoardPrinter类应该实现为具有适当接口的策略,该接口将位置数组作为输入,然后应该在Board类中注入此BoardPrinter类,以便Board类可以调用特定的打印策略什么时候想要展示自己。像这样:
interface PositionPrinter {
public void printPositions(char[][] board);
}
class BoardPrinter implements PositionPrinter {
public void printPositions(char[][] board) {
// Do a Board specific printing.
}
}
class Board {
public PositionPrinter positionPrinter;
private final char [][] positions = new char[7][8];
public char[][] getPositions() {
return positions;
}
public void printBoard() {
positionPrinter.printPositions(positions);
}
}
答案 1 :(得分:0)
您的问题不完整,但这是一种显示如何访问它的方法。
{{1}}