프런트엔드/디자인 패턴

[6일차] 메멘토 | 행동 패턴 11일만에 끝내기 챌린지 - GoF 디자인 패턴

조드래곤나인 2023. 7. 16. 15:06

 

출처: 에릭 감마 , 리처드 헬름 , 랄프 존슨 , 존 블리시디스. 『Gof의 디자인 패턴』. 김정아(역). 프로텍미디어, 2015.

 

 

[6일차] 메멘토(Memento)
행동 패턴 11일만에 끝내기 챌린지 - GoF 디자인 패턴

타입스크립트로 설명하는 GoF 디자인 패턴의 행동 패턴 11일만에 끝내기 챌린지

 

 

메멘토란?

캡슐화를 위배하지 않은 체
어떤 객체의 내부 상태를 잡아내고 실체화 시켜둠으로써,
이후 해당 객체가 그 상태로 되돌아 올 수 있도록 합니다.

 

 

활용성

1) 어떤 객체의 상태에 대한 스냅샷을 저장한 후
나중에 이 상태로 복구해야 할 때

2) 상태를 얻는 데 필요한 직접적인 인터페이스를 두면

그 객체의 구현 세부사항에 드러날 수 밖에 없고,

이것으로 객체의 캡슐화가 깨질때

 

 

구조 및 구현

class Memento {
    private state: unknown
    constructor(state: unknown) {
        this.setState(state)
    }
    getState() {
        return this.state
    }
    setState(state: unknown) {
        this.state = state
    }
}

class Originator {
    private state: unknown
    constructor() {
        this.state = ''
    }
    createMemento() {
        return new Memento(this.state)
    }
    setMememto(memento: Memento) {
        this.state = memento.getState()
    }
}

class Caretaker {
    constructor(originator: Originator) {
        const memento = originator.createMemento()
        originator.setMememto(memento)
    }
}
 

 


 

 

공식 기술블로그 링크

 

728x90