It's not a secret anymore!
The moose likes OO, Patterns, UML and Refactoring and the fly likes Undo, Memento for Composite Object Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Engineering » OO, Patterns, UML and Refactoring
Bookmark "Undo, Memento for Composite Object" Watch "Undo, Memento for Composite Object" New topic

Undo, Memento for Composite Object

marten kay
Ranch Hand

Joined: Feb 03, 2007
Posts: 178


I have a mutatable class similar to below, note code abridged to illustrate key points. The key point being that the Element and Variable objects in the maps are mutated outside of the Rendition object (via a web html inteface). That is, the composed state of the Rendition object is not handled by methods in the Rendition object.

I now want to implement an undo facility where any changes to the composed state can be reverted through a call to the Rendition.

To achieve this, I understand that I need to do a major refactor to ensure that all changes of state to the composed Rendition object are handled by Rendition which can then generate a memento object for each change.

Before I undertake this refactor, is anybody able to give me further pointers on moving forward?



when in doubt put it in parenthesis and stick a dollar sign in front of it, only good can come from this.
Madhan Sundararajan Devaki
Ranch Hand

Joined: Mar 18, 2011
Posts: 312

You may use "Observer" pattern to cascade your changes.

Not many get the right opportunity !
Wouter Oet
Saloon Keeper

Joined: Oct 25, 2008
Posts: 2700

You could also look at the Command pattern. This pattern is very suitable for implementing undo-functionality.

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." --- Martin Fowler
Please correct my English.
I agree. Here's the link:
subject: Undo, Memento for Composite Object
It's not a secret anymore!