UndoRedo를 구현하기 위해서 Memento 패턴을 사용하고 있습니다.

Command패턴과 섞어서 쓰는 것이 맞는지 모르겠지만 일단 Memento만 이용하고 있습니다.

UndoRedo했을때 대상이 되는 상태를 심볼매니저에 있는 멤버변수들로 했습니다.

심볼매니저의 멤버변수에는 현재 캔버스에 그려진 심볼들, 사용자가 선택한 심볼들, 라인을 가질 후보 Figure

이 있습니다.

DSymbolManager가 Originator가 되고,

DMemento가 memento가 됩니다.

reodo undo를 하기 위해서 memento를 많이 갖고 있어야 하므로, 그것을 관리하는 UndoRedoManager를 만
들어 관리하도록 하였습니다.

클라이언트에 해당하는 painter클래스에 DSymbolManager와 UndoRedoManager를 가지고 redo undo를 

수행 하도록 했습니다.

내일 정보보호론 시험이 있는 관계로 설계만 하고 마쳐야 할 것 같습니다.


신고
by danguria 2009.10.25 12:04
| 1 |