2013-10-19 25 views
0

所以,我有一個代表遊戲板(4x4)的類,每個空間都是一個die的面值,由一個數組列表表示。我應該實施工廠方法來生成電路板。在java中用工廠方法實現的困難

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; 
} 
+0

請讓你的問題更清楚你實際想要做什麼? – ankit

+0

該板類中的此方法應該返回它在makeFixedBoard()中構建的Board對象。但是,它是返回一個空白板。 – rhl13

+0

它返回一個空白板,因爲你寫了返回新的Board(),它將創建一個新的板子實例,並將它返回給調用方法。如果你想返回一個填充板,那麼你必須在你的for循環之上的某個地方創建你的新實例,然後設置值 – ankit

回答

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董事會呼叫者的創建的實例。