상태정보 저장이 목적

 


 

 

undo, redo 같은 기능을 실행 하기 위해선 변경된 정보 , 심할 경우 변경된 상태의 전체 정보를

 

따로 저장 관리하는 클래스를 두는 것을 memento 패턴이라 한다

 

 

일반적으로 필요한 정보만 따로 모아 관리 하는 것을 말한다

 

 

 

 

행동:

저장할 필요 정보를 memento 에 저장했다가 다시 돌리고 싶을때 memento 에서 다시 불러온다

 

또한 해당 객체 상태를 직접 접근하는 것이 어려운 경우 상태 정보를 memento 로 빼놓아

 

클라이언트가 객체의 은닉성을 깨트리지 않고 상태 정보를 알기 위해 memento 로 저근하는 상황에서도 사용 될 수 있다

 

 

이처럼 직접 접근하지 못하게 경계 역할도 할 수 있다

 

 

하지만 원래 memento 에 상태를 저장하는 객체는 memento 객체를 마음대로 다루길 원함으로

 

friend 로 선언해 주는 것도 좋다

 

하지만 다른 것이 접근할때는 private 로 선언하는게 좋다

 

 


 

모든 값을 다 저장해서 가지고 있으면 비효율적이므로 변경된 부분만 관리 한다( 이부분 설계가 관건)

 

 

지나치게 memento 에 다른 클라이언트가 접근해 모두 막 상태를 바꾸는 구조는 좋지 않다

 

 

redo/undo 같은 경우  메모리가 많이 커질 수 있음으로 횟수의 제한을 두는 것이 좋다

 

 

command 패턴과 memento 패턴을 같이 사용하여 명령을 memento 에 저장해 놓으면 효과적이다

 

 

 

 

 

 


 

 

 

 

memento 할(저장할) 단위 설정이 중요

 

단위가너무 작으면 저장된는 것이 많아 질 수 있다

 

 

반응형

'디자인패턴과방법론 > 디자인패턴' 카테고리의 다른 글

state 패턴  (0) 2012.11.02
Observer 패턴  (0) 2012.11.02
iterator 패턴, 스택제거시 삭제되는 포인터(like 스마트포인터)  (0) 2012.11.02
interpreter 패턴  (0) 2012.11.02
command 패턴  (0) 2012.11.02

+ Recent posts