Skip to content

Instantly share code, notes, and snippets.

@okanyenigun
Created September 25, 2022 14:48
Show Gist options
  • Save okanyenigun/4964713ed45c1b836611a6edab679f60 to your computer and use it in GitHub Desktop.
Save okanyenigun/4964713ed45c1b836611a6edab679f60 to your computer and use it in GitHub Desktop.
memento design pattern
class Memento():
def __init__(self, state):
self.state = state
print(f"I am a Memento and my state is {self.state}")
class Originator():
def __init__(self):
self._state = ""
def get_state(self):
return self._state
def set_state(self, state):
self._state = state
print(f"New State of Originator: {self._state}")
def get_memento(self):
print("Providing a new memento object of current state")
return Memento(self._state)
def memento(self, memento):
print(f"Returning to the state of memento {memento.state}")
self._state = memento.state
class CareTaker():
def __init__(self, originator):
self._originator = originator
self._mementos = []
def create(self):
memento = self._originator.get_memento()
self._mementos.append(memento)
print("Total mementos in caretaker: ",len(self._mementos))
def restore(self, index):
print(f"Undo operation at {index} index")
memento = self._mementos[index]
print(memento.state)
self._originator.memento(memento)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment