Nors API undo atžvilgiu dar nėra iki galo nusistovėjusi (tiesą sakant, undo mechanizmas šiek tiek *nervina*, nes jam *palaikyti* reikia tam tikrų pastangų), sprendimas yra.
Sprendimas veikia, ir štai kaip jis maždaug atrodo.
Undo mechanizmui užtenka turėti sąrašą objektų, kurie gali atstatyti naują būseną į seną būseną. Tarkime, IMemento:
///
/// An interface for all undo / redo actions
///
public interface IMemento
{
///
/// Restores the state of the object.
///
///A new memento, which performs the Redo action
IMemento Restore();
}
Kiekvienas IMememtno Restore() metode atstato kokią nors informaciją į prieš tai buvusį būvį.
Man kol kas prireikė dviejų memento tipų:
PropertyMenento - atstato bet kurio properčio reikšmę į prieš tai buvusį
DelegateMemento - lengvai kustomizuojamas memento per delegatus
No comments:
Post a Comment