Я занимаюсь разработкой игры, в которой пользователь может включать / выключать определенные эффекты.Эти эффекты вызывают утечку энергии пользователя, и различные части программы должны быть в состоянии проверить, активен ли эффект.В настоящее время я использую тип enum для хранения и проверки эффектов:
public static enum Effects { SUPER_FIRE, FIRE_SHIELD }
if (someEffect == Effects.SUPER_FIRE) {
// Breath fire etc..
}
Сказав это, я должен хранить другие переменные для каждого эффекта - например, уровень, необходимый для его использования, или уровень вкоторый истощает энергию.Итак, другой метод, о котором я подумал, это использовать класс:
public class SuperFire extends Effect {
public static int levelRequired = 10;
public static int drainRate = 5;
public boolean active() {
// Check if it's active
}
public boolean activate() {
}
public boolean deactivate() {
}
}
SuperFireEffect sfe = new SuperFire();
sfe.activate();
if (sfe.active()) {
energyLevel -= sfe.drainRate;
}
sfe.deactivate();
Какая реализация (или любая другая) лучше всего подходит для этой ситуации?