
출처: 에릭 감마 , 리처드 헬름 , 랄프 존슨 , 존 블리시디스. 『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
'프런트엔드 > 디자인 패턴' 카테고리의 다른 글
[8일차] 상태 | 행동 패턴 11일만에 끝내기 챌린지 - GoF 디자인 패턴 (0) | 2023.07.16 |
---|---|
[7일차] 옵저버 | 행동 패턴 11일만에 끝내기 챌린지 - GoF 디자인 패턴 (0) | 2023.07.16 |
[5일차] 중재자 | 행동 패턴 11일만에 끝내기 챌린지 - GoF 디자인 패턴 (0) | 2023.07.16 |
[4일차] 반복자 | 행동 패턴 11일만에 끝내기 챌린지 - GoF 디자인 패턴 (0) | 2023.07.16 |
[3일차] 해석자 | 행동 패턴 11일만에 끝내기 챌린지 - GoF 디자인 패턴 (0) | 2023.07.16 |