Myślałem, że mam proste zadanie w postaci implementacji akcji undo i redo ale trochę mi się to wszystko pomieszało i sam chyba zagmatwałem. Czytałem o wzorcu memento ale nie bardzo wiem jak go mam w moim przypadku użyć więc póki co zrobiłem tak i rozwiązanie nie jest pełne - działa to dobrze dla przypadków typu undo-undo-redo-redo ale sekwencja undo-redo-undo-redo już** nie działa** pewnie jakiś głupi błąd strzeliłem ale go teraz nie widzę po prostu :(
LinkedList<State> stateCache = new LinkedList<>(); //tutaj przechowuje zmiany stanów
LinkedList<State> movesUndoned = new LinkedList<>(); //tutaj stany cofnięte
public void stateChanged(State newState){
stateCache.add(stanObecny); //stanObecny to nowy obiekt na podstawie this.state
this.state = newState;
}
public void undo() {
movesUndoned.add(stanObecny);
this.state= stateCache.getLast();
stateCache.removeLast();
}
public void redo() {
stateCache.add(stanObecny);
this.state= movesUndoned.getLast();
movesUndoned.removeLast();
}