Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl6
- class Originator {
- has Str $!State;
- method set(Str $State) {
- say "Originator: Setting state to " ~ $State;
- $!State = $State;
- }
- method saveToMemento() returns ::Memento {
- say "Originator: Saving to Memento.";
- return ::Memento.new(:State($!State));
- }
- method restoreFromMemento(::Memento $memento) {
- $!State = $memento.getSavedState();
- say "Originator: State after restoring from Memento: " ~ $!State;
- }
- class Memento {
- has Str $!State;
- submethod BUILD(Str $!State) {
- }
- method getSavedState() returns Str {
- return $!State;
- }
- }
- }
- class Caretaker {
- my @savedStates;
- method main() {
- my Originator $originator = Originator.new();
- $originator.set("State1");
- $originator.set("State2");
- @savedStates.push($originator.saveToMemento());
- $originator.set("State3");
- @savedStates.push($originator.saveToMemento());
- $originator.set("State4");
- $originator.restoreFromMemento(@savedStates.pop);
- }
- }
- my Caretaker $caretaker = Caretaker.new();
- $caretaker.main();
Advertisement
Add Comment
Please, Sign In to add comment