У меня есть игра с разными уровнями, с большим количеством общего кода между уровнями.Итак, у меня есть MainActivity, которая содержит весь общий код, и он загружает фрагмент LevelOne для каждого уровня с кодом, специфичным для уровня.Мне нужно использовать фрагменты, так как я также загружаю другие фрагменты с другими компонентами пользовательского интерфейса.
Все фрагменты уровня содержат функции с одинаковыми именами и уникальным для каждого уровня кодом, например StartGame () и PauseGame (), которые MainActivity вызывает при необходимости.Как загрузить один объект, который позволяет мне получить доступ к этим функциям, независимо от того, какой это фрагмент?
Например, в Python я бы сделал:
// Instantiation
int level_number = 1;
levels = [levelOne, levelTwo]
level = levels[level_number]
// Something happens and I want to start the currently selected level somewhere in MainActivity
level.StartGame()
, но в Java я не могу сделатьэто так, как я должен заранее указать класс объекта, который я не знаю, и вместо этого я должен иметь это, если условия везде я ссылаюсь на уровень:
// Instantiation
LevelOne levelOne = new LevelOne();
LevelTwo levelTwo = new LevelTwo();
// Something happens and I want to start the currently selected level somewhere in MainActivity
if (level_number == 1) {
levelOne.StartGame();
} elif (level_number == 2) {
levelTwo .StartGame();
}