代码之家  ›  专栏  ›  技术社区  ›  Relequestual

我应该使用全局变量还是在java中传递变量?

  •  3
  • Relequestual  · 技术社区  · 16 年前

    我在想,创建一个只包含一组所有类都可以扩展的变量的类是一种选择吗?这是好主意还是坏主意/不是好做法?

    提前感谢。

    5 回复  |  直到 16 年前
        1
  •  7
  •   duffymo    16 年前

    您不应该根据数据结构进行设计。Java是一种面向对象的语言。试着把你的问题看作是相互作用的物体。它不是二维数组;这是一个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.
    } 
    
        2
  •  4
  •   starblue    16 年前

    在构造函数中传递它们,并将它们保存在成员变量中。

        3
  •  2
  •   Adam    16 年前

    如果你 你只有一个“二维网格正方形数组”,你总是可以使用单例模式,本质上使其具有全局性。

    尽管有人对此表示支持和反对,但你可能会发现有一天你希望能够预加载映射,但单例会造成阻碍(无法创建单例的第二个实例)。

        4
  •  1
  •   Peter Perháč    16 年前

    import static A;

        5
  •  1
  •   arodrigues    16 年前

    我建议它保持静态,但创建一个明确的类来从中读取数据,GridSquaresAssessor说。在这个类中,您编写了访问数组的所有方法。更好的是,将其设置为该类的私有静态字段,以避免任何其他代码 以本类中未定义的方式进行操作。

    如果你的代码是多线程的,一定要使2D数组同步。