0

所以,我有一个代表游戏板(4x4)的类,每个空间都是骰子的面值,内部由数组列表表示。我应该实现工厂方法来生成板。

public class Board {
    static ArrayList<Die> board = new ArrayList<Die>();

    public static Board makeFixedBoard(DiceManager dice) {
        for (int i = 0; i < 16; i++) {
            //add faces
        }
        return new Board();
    } 
}

但是,我很难准确理解如何实现工厂方法。在这里,我的回报是一个新的板,但这只是创建一个新的空板,而不是我生成的那个。

这是模具类

public class Die {
char[] faces = new char[6];
char facevalue;

public Die(char side1, char side2, char side3, char side4, char side5, char side6){
    faces[0] = side1;
    faces[1] = side2;
    faces[2] = side3;
    faces[3] = side4;
    faces[4] = side5;
    faces[5] = side6;

    facevalue = faces[0];
}

public void roll() {
    int roll = 0 + (int)(Math.random() * 6);
    facevalue = faces[roll];
}

public char getValue() {
    return facevalue;
}
4

1 回答 1

0

没有必要保持boardstatic.

private ArrayList<Die> board = new ArrayList<Die>();
public static Board makeFixedBoard(DiceManager dice) {
    Board boardInstance = new Board();
    for (int i = 0; i < 16; i++) {
        //add faces
        boardInstance.board.add(die);
    }
    return boardInstance;
} 

您首先需要创建实例,Board然后在 for 循环中将die您创建的添加到 中boardInstance,在所有die已添加之后,您return将创建的板实例添加到调用者。

于 2013-10-19T04:36:21.960 回答