在两个类之间共享声明的数组 - Java

时间:2018-01-11 14:21:44

标签: java arrays class oop

在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;
                }
            }
         }
    }

}

2 个答案:

答案 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}}