목차
개요
내용
요약
캡슐화를 위반하지 않고, 나중에 상태를 복구하기 위해 객체의 내부 상태를 밖으로 노출시키자
예시
객체의 내부 상태를 기록해두는건 중요할 때가 있습니다. 체크포인트를 구현하거나 undo를 해야할 때 특히 필요한데요. 하지만 객체들은 일반적으로 자신들의 상태를 캡슐화해서 외부로 노출시키지 않습니다. 이럴 때 메멘토 패턴을 쓸 수 있습니다. 메멘토는 다른 객체의 내부 상태 스냅샷을 저장하는 객체입니다. 이 때, 내부 상태가 저장되는 다른 객체를 메멘토의 창시자라고 합니다.
메멘토에서 상태를 가져오는 것은 오직 창시자만 가능합니다.
구조
이야깃거리
언제 써야 할까?
- 나중에 복구하기 위해 객체의 상태를 저장해야만 할 때
- 객체의 상태를 직접적으로 얻는 것이 세부 구현을 노출하고 캡슐화를 깰 때
장단점
- (Pros) 캡슐화 보존
- (Pros) 메멘토 창시자 객체를 단순화시킴.
- (Cons) 메멘토를 사용하는 것은 비싼 작업일 수 있음.
Case Study
Case 1. Sofrtware supporting Undo mechanism
되돌리기(Ctrl+Z) 메커니즘을 지원하는 소프트웨어는 메멘토 패턴을 구현하고 있을 가능성이 있습니다.
출처
GoF Design Patterns
'Design Patterns' 카테고리의 다른 글
[Design Patterns] State (0) | 2024.06.09 |
---|---|
[Design Patterns] Observer (0) | 2024.06.09 |
[Design Patterns] Mediator (0) | 2024.05.13 |
[Design Patterns] Iterator (0) | 2024.04.21 |
[Design Patterns] Interpreter (0) | 2024.04.21 |