Zapis/Odczyt danych z klas abstrakcyjny pól

0

Witam pisze mały system rpg, a dokładnie system ulepszenia, zrobiłem sobie klase abstrakcyjną:
public abstract class Upgrade {

private final String uniqueID;
private final int requiredLevel;
private final String displayName;
private List<String> descritpion;
private final List<Upgrade> requiredOtherUpgrades;

//kiedy spełnia wymagania
public abstract void onUnlockUpgrade(User user);

//kiedy jakiegos nie spelnia, np stracil lvl
public abstract void onLockUpgrade(User user);

public boolean canUnlock(User user) {
    return true;//always true but i can be override
}

//constructor,getterySettery

}
i nastepnie mam np w swoim obiekcie
List<Upgrade> upgrades;
i teraz mam 2 rozwiązanie problemu który mi pozwoli pobrać tak jakby pola z tych upgrade(ulepszenia nie są tylko true false ale np mogą zwrócić int/long np dodatkowy %doświadczenia za zabójstwo etc)

pierwsze rozwiązanie, niby proste ale troche głupie
dodawać to mysql/obiektu nastepne pole które przechowuje dane z posczególnego ulepszania np private int moreExperience;
i potem w mysql dodawać takie pole, oraz w klasie, słabe bo musze zmieniać zapytanie update co dodanie nowego ulepszanie;/
drugie rozwiązanie, zrobienie lazy loading do getterów np
public int getMoreExperience(){
if(moreExperience == null){//tutaj moreExperience musiało by być Integer, by przypisac mu nulla
//tutaj for-each po wszystki upgrade, jesli zawiera taki co daje wiekszy exp
moreExperience = tutajZForEachWartosc;
}
return moreExperience;
}
Ta metoda jest wydaje mi się dużo lepsza bo w bazie przetrzymuje tylko liste ulepszen, a dokladnie uniqueId upgradu po przecinkach, problem taki że jakbym chciał na stronie to pokazać np to już nie zrobie tego bo w bazie by nie było wartości tylko idki ulepsze.
Czy jest na to jakiś jeszcze inny sposób?

0

Popatrz na ten wpis, i spróbuj coś z niego zrozumieć. Czy jest na to jakiś jeszcze inny sposób? Na co sposób, sformułuj to jasno. Konieczna edycja. Nie możesz być programistą, jak nie potrafisz w czytelny sposób wyjaśnić swojego problemu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1