The Memento design pattern allows an object to restore itself to a previous state by storing internal state in memento objects and externalizing state storage in a caretaker object. The caretaker holds an array list of mementos representing different states that can be retrieved to roll back or undo changes to the originating object.