TBA2

Memento

Jun 22nd, 2011
329
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 6 1.40 KB | None | 0 0
  1. #!/usr/bin/perl6
  2.  
  3. class Originator {
  4.         has Str $!State;
  5.  
  6.         method set(Str $State) {
  7.                 say "Originator: Setting state to " ~ $State;
  8.                 $!State = $State;
  9.         }
  10.         method saveToMemento() returns ::Memento {
  11.                 say "Originator: Saving to Memento.";
  12.                 return ::Memento.new(:State($!State));
  13.         }
  14.         method restoreFromMemento(::Memento $memento) {
  15.                 $!State = $memento.getSavedState();
  16.                 say "Originator: State after restoring from Memento: " ~ $!State;
  17.         }
  18.  
  19.         class Memento {
  20.                 has Str $!State;
  21.  
  22.                 submethod BUILD(Str $!State) {
  23.                 }
  24.                 method getSavedState() returns Str {
  25.                         return $!State;
  26.                 }
  27.         }
  28. }
  29.  
  30. class Caretaker {
  31.         my @savedStates;
  32.  
  33.         method main() {
  34.                 my Originator $originator = Originator.new();
  35.                 $originator.set("State1");
  36.                 $originator.set("State2");
  37.                 @savedStates.push($originator.saveToMemento());
  38.                 $originator.set("State3");
  39.                 @savedStates.push($originator.saveToMemento());
  40.                 $originator.set("State4");
  41.                 $originator.restoreFromMemento(@savedStates.pop);
  42.         }
  43. }
  44.  
  45. my Caretaker $caretaker = Caretaker.new();
  46. $caretaker.main();
Advertisement
Add Comment
Please, Sign In to add comment