Можно ли как-то создать список параметров типа? - PullRequest
0 голосов
/ 23 января 2020

У меня есть класс "Spawner", который имеет неопределенную временную шкалу. Время от времени я хочу, чтобы появлялись объекты "Волна", которые все наследуются от моего абстрактного класса "Спрайт". Я думал о том, чтобы заранее определить некоторые формирования в списках, такие как

XXMMHMMXX

, где X - ничто, M - Метеор, а H - какое-то увеличение здоровья.

class Wave extends LinkedList<Sprite>
{
    public Wave(Sprite... wave) {
        for (Sprite sp : wave) {
            add(sp);
        }
    }
}

Есть ли лучший способ сделать это, чем просто использовать разные целые числа и проверку для каждого?

Я тоже думал о Enum, но не вижу использования, кроме как использовать его для чека.

Заранее спасибо!

1 Ответ

1 голос
/ 23 января 2020

шаблон нулевого объекта , возможно?

Вот простой пример:

interface Sprite{
    void render();
}

class NullSprite implements Sprite {
    public void render() {
        System.out.print(" ");
    }
}

class MeteorSprite implements Sprite {
    @Override
    public void render() {
        System.out.print("M");
    }
}

class Wave extends LinkedList<Sprite> implements Sprite {
    public Wave(Sprite... wave) {
        addAll(Arrays.asList(wave));
    }

    @Override
    public void render() {
        forEach(Sprite::render);
    }

    public static void main(String[] args) {
        new Wave(new NullSprite(), new MeteorSprite(), new NullSprite(), new MeteorSprite()).render();
    }
}

Отпечатки

<space>M<space>M

Я также использовал составной шаблон здесь, поэтому Wave на самом деле Sprite, состоящий из набора других Sprite с. Может быть тоже полезно.

...