C/C++ 디자인 패턴 (17) — 메멘토(Memento)

게임에서 보스 방 앞에 체크포인트를 만들거나, 설정 화면에서 "취소"를 누르면 이전 값으로 돌아가야 한다. 객체 상태를 바깥에서 저장하려면 private 멤버를 공개하거나 getter/setter를 잔뜩 만들어야 하는데, 그러면 캡슐화가 깨지고 저장하는 쪽이…

Continue ReadingC/C++ 디자인 패턴 (17) — 메멘토(Memento)

C/C++ 디자인 패턴 (14) — 커맨드(Command)

편집기의 "되돌리기", 작업을 백그라운드 스레드에 맡기기, 실행한 작업을 기록했다가 다시 재생하기는 겉보기에 다른 기능이지만 공통 전제가 있다. "무엇을 할지"가 함수 호출로 흘러가 버리지 않고 값으로 남아 있어야 한다는 것이다. 커맨드(Command)는…

Continue ReadingC/C++ 디자인 패턴 (14) — 커맨드(Command)

C++ 예제로 배우는 소프트웨어 설계 기법 (9) — 메뉴 이벤트 처리(Menu Event)

8편에서 만든 메뉴 시스템은 항목을 선택하면 command()가 불리는 데서 끝났다. 실제 프로그램에서는 "Save를 선택하면 문서를 저장한다"처럼 메뉴 항목과 애플리케이션의 동작을 연결해야 한다. 그런데 메뉴는 라이브러리 쪽 코드이고 문서는 애플리케이션 쪽…

Continue ReadingC++ 예제로 배우는 소프트웨어 설계 기법 (9) — 메뉴 이벤트 처리(Menu Event)