//http://www.moviemalls.com/M/memento.htm /** * This does the computations and furnishes and uses Mementos for undoes. *
Memento Design Pattern example for COM1204 Summer 2003. * * @author Bob Futrelle * @version 0.1, 4 July 2003 * */ public class Engine { private int result; // initially zero int getResult() { return result; } void postResult(){ System.out.println("Result now = " + result); } void times(int factor) { result *= factor; postResult(); } void add(int summand) { result += summand; postResult(); } Memento getMemo() { return new Memento(); } void reset(Object m) { result = ((Memento)m).savedResult; } // reset // Here's the trick, a private class only Engine can produce and use. private class Memento { private int savedResult; private Memento() { savedResult = result; } } } // class Engine