// @topic S-0314-14-01-40 Java Memento Design pattern // @brief class AccountCaretaker holds a collection of preserved states package memento; import java.util.ArrayList; public class AccountCaretaker { //--------------------------------- // data attributes //--------------------------------- ArrayList< AccountMemento > mementos = new ArrayList<>(); //--------------------------------- // operations //--------------------------------- public void store( AccountMemento memento ) { // accumulate states: mementos.add( memento ); } public void undo( CheckingAccount account ) { // loop in reverse order for ( int idx = mementos.size(); idx > 0; --idx ) { account.restoreMemento( mementos.get( idx - 1 ) ); } // dispose of restored states: mementos.clear(); } }//class AccountCaretaker