Design Patterns

[Design Patterns] Memento

우라릭 2024. 6. 6. 23:08

 

 

목차

    개요

    내용

    요약

    캡슐화를 위반하지 않고, 나중에 상태를 복구하기 위해 객체의 내부 상태를 밖으로 노출시키자

    예시

    객체의 내부 상태를 기록해두는건 중요할 때가 있습니다. 체크포인트를 구현하거나 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