如何避免"这个"作为Class参数

时间:2018-05-22 07:56:43

标签: java constructor

我认为使用this作为类参数是不错的,因为如果对象的初始化顺序不正确,可能会出现错误。

避免这种情况的最佳做法是什么?

示例:

public class Game{

    private Player p1, p2, currentPlayer;
    private Board board;

    Game() {
        board = new Board(this);
    }

    private boolean hasFieldsToBeClicked() {
            return board.checkFieldsToBeClicked();
        }

2 个答案:

答案 0 :(得分:6)

从设计的角度来看:不要在这里做!

含义:Board表示。你的国际象棋棋盘是否了解你现在拥有的游戏?

换句话说:传递this可以没问题,但正如您所指出的,它也可能是一个问题。因此,最佳做法是:只有在有充分理由的情况下才能通过this。特别是当它出现在构造函数中时,this仍处于初始化过程中。

让棋盘了解正在进行的游戏并不是一个很好的理由。

请记住:您的类/对象应建模现实世界。只建立有意义的关系!

所以这里真正的答案是调查为什么你的Board类需要了解Game类,然后摆脱这种依赖。

答案 1 :(得分:0)

1)建造者如何创造游戏和董事会而不是另一个。然后,构建者可以在游戏中设置棋盘,在棋盘中设置游戏。

2)看起来董事会是游戏的固有部分。

  • a)所以你可以使用Game和Board的接口,并在一个类中实现。
  • b)如果您想将游戏与棋盘区分开来,您可以在游戏中使用内部班级。