Моя команда и я создаем университетский проект. Нам нужно создать приложение, имитирующее знаменитую игру Monopoly в Java. Мы используем JavaFX как библиотеку graphi c. Это мой первый «большой» проект, и теперь, когда мы завершили все MVC части, нам нужно заставить их общаться.
Мой взгляд должен обновляться каждый раз, когда игрок платит деньги или если его пешка движется на доске и во многих других случаях. У нас есть контроллер GameEngine, который связывает все компоненты контроллера / модели.
Мой вопрос (который мучает меня за несколько дней): Если я создаю ViewController, который получает данные из GameEngine, а затем контроллер обновляет представление, является ли это MVC нарушением?
Или лучше создать много методов в моем ViewController, который обновляет отдельные компоненты, которые могут вызываться другими контроллерами? В этом случае, какой будет лучший способ сделать это?
Это часть моего ViewController
public class ViewController {
@FXML
private Label playerBalance0;
@FXML
private Label playerBalance1;
@FXML
private Label playerBalance2;
@FXML
private Label playerBalance3;
@FXML
private Label playerBalance4;
@FXML
private Label playerBalance5;
private List<Label> playerBalances = new ArrayList<Label>(Arrays.asList(playerBalance0, playerBalance1,
playerBalance2, playerBalance3, playerBalance4, playerBalance5));
public void updatePlayerBalances(final Map<Integer, Double> balances) {
balances.forEach((K, V) -> {
if (V.equals(0.0)) {
this.playerBalances.get(K).setText("");
} else {
this.playerBalances.get(K).setText(String.format("%.0f", V));
}
});
}
}
Правильно ли, что другие классы дают мне данные для отображения, как в этом фрагменте кода? Или было бы лучше что-то вроде этого:
public class ViewController {
@FXML
private Label playerBalance0;
@FXML
private Label playerBalance1;
@FXML
private Label playerBalance2;
@FXML
private Label playerBalance3;
@FXML
private Label playerBalance4;
@FXML
private Label playerBalance5;
private List<Label> playerBalances = new ArrayList<Label>(Arrays.asList(playerBalance0, playerBalance1,
playerBalance2, playerBalance3, playerBalance4, playerBalance5));
public void updatePlayerBalances() {
Map<Integer, Double> balancs = GameEngine.getBalances();
balances.forEach((K, V) -> {
if (V.equals(0.0)) {
this.playerBalances.get(K).setText("");
} else {
this.playerBalances.get(K).setText(String.format("%.0f", V));
}
});
}
}
Заранее благодарю вас и прошу прощения за мой Engli sh.