반응형

메멘토 패턴은, 이전 상태로 복원할 필요가 있을 때 사용하는 패턴이다.


이전에 설명했던 [명령패턴]은 명령을 내리는 개체와 실행하는 개체를 나누어서 인터페이스화 시킨 패턴이다.


명령 패턴은 인터페이스를 상속 받아 실행하기 때문에, 명령을 추가하기에 간단하다.



메멘토 패턴은 originator, memento, caretaker로 이루어진다.


originator : save, restore가 memento 개체 타입으로 이루어진 개체

memento : originator가 save 및 restore 하려는 정보 또는 상태를 가지고 있는 패턴 개체

caretaker : memento를 리스트로 보유하여 관리하는 개체


originator 개체의 상태를 저장하기 때문에 Save & Load에 많이 쓰인다.

때문에, 메멘토 패턴은 깊은 복사(deep copy)를 구현해 줄 필요가 있다.


메멘토 패턴을 쓰는 대표적인 게임은 바둑, 장기, 체스 등 게임의 필수 조건인 무르기, 복기와 같은 시스템을 필요로 하는 게임이다.



각 각의 개체가 해당하는 역할을 주석 달아두었다.


Board 클래스는 바둑판의 정보를 가진 개체이다.

BadukBoard 클래스는 Board의 상태를 Save & Restore 할 수 있는 패턴의 주요 개체이다.

BadukBoardTaker 클래스는 BadukBoard 리스트를 두어 무르기, 복기 시스템을 사용 할 수 있는 바둑판의 전체 정보를 관리하는 개체이다.


Board(originator)를 통하여 Save 상태를 내보내고, Restore 상태를 가져올 수 있는 기능이 있어야 한다.

BadukBoard(memento)를 통하여 originator에서 저장한 개체의 상태를 가지고 있으며, 저장한 개체의 상태를 내보낼 수 있는 기능이 있어야 한다.

BadukBoardTaker(caretaker)를 통하여 memento로 저장한 개체의 모든 리스트들을 관리할 수 있는 기능이 있어야 한다.




메멘토 패턴을 사용한 간단한 규칙 없는 바둑 게임을 만들어 보았다.



반응형

+ Recent posts