Created
September 25, 2022 14:48
-
-
Save okanyenigun/4964713ed45c1b836611a6edab679f60 to your computer and use it in GitHub Desktop.
memento design pattern
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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