[python] 메멘토 디자인 패턴
메멘토 디자인 패턴은 객체의 상태를 저장하고 복원하는 기능을 제공합니다. 이러한 패턴은 객체의 상태를 추적하고 필요할 때 이전 상태로 되돌릴 수 있는 유연성을 제공합니다.
언제 사용해야 할까요?
메멘토 디자인 패턴은 다음 상황에서 유용합니다:
- 객체의 상태를 저장하고, 나중에 필요할 때 복원해야 하는 경우
- 객체에 대한 스냅샷을 저장하고 관리해야 하는 경우
- 객체의 상태 변경을 취소하거나 호출 로그를 저장해야 하는 경우
예시
class Originator:
def __init__(self):
self.state = ""
def set_state(self, state):
self.state = state
def save_state(self):
return Memento(self.state)
def restore_state(self, memento):
self.state = memento.get_state()
class Memento:
def __init__(self, state):
self.state = state
def get_state(self):
return self.state
class Caretaker:
def __init__(self):
self.mementos = []
def save_memento(self, memento):
self.mementos.append(memento)
def restore_memento(self, index):
return self.mementos[index]
# 사용 예시
originator = Originator()
caretaker = Caretaker()
originator.set_state("상태1")
caretaker.save_memento(originator.save_state())
originator.set_state("상태2")
caretaker.save_memento(originator.save_state())
originator.set_state("상태3")
originator.restore_state(caretaker.restore_memento(0))
print(originator.state) # 출력: 상태1
originator.restore_state(caretaker.restore_memento(1))
print(originator.state) # 출력: 상태2
위 예시 코드는 메멘토 패턴의 간단한 구현을 보여줍니다. Originator
클래스는 상태를 저장하고 복원하기 위한 메서드를 제공하며, Memento
클래스는 상태를 저장하는 역할을 합니다. Caretaker
클래스는 Memento
객체를 관리하고, 필요한 시점에 복원할 수 있습니다.
요약
메멘토 디자인 패턴은 객체의 상태를 저장하고 복원하기 위한 유용한 패턴입니다. 이를 통해 객체의 상태를 추적하고 필요한 경우 이전 상태로 되돌릴 수 있습니다. 이를 통해 애플리케이션의 유연성과 확장성을 높일 수 있습니다.