package Originator; use strict; use Memento; sub new { my $class = shift; my $self = {}; $self->{i} = shift; $self->{j} = shift; bless $self, $class; } sub checkPoint { my $self = shift; return Memento->new($self->{i},$self->{j}); } sub rollBack { my $self = shift; my $memento = shift; $self->{i} = $memento->geti(); $self->{j} = $memento->getj(); } sub incrementi { my $self = shift; $self->{i} = $self->{i} + 1; } sub incrementj { my $self = shift; $self->{j} = $self->{j} + 1; } 1;