C/C++ 디자인 패턴 (21) — 템플릿 메서드(Template Method)

CSV, JSON, 엑셀에서 데이터를 가져오는 기능은 "읽기 → 걸러내기 → 저장 → 알리기"라는 같은 순서를 따르고, 읽는 방법만 다르다. 형식마다 이 순서를 복사해 두면 단계 하나를 추가할 때 모든 복사본을…

Continue ReadingC/C++ 디자인 패턴 (21) — 템플릿 메서드(Template Method)

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

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

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

C/C++ 디자인 패턴 (16) — 중재자(Mediator)

가입 화면에서 "약관 동의"를 체크하고, 이메일이 올바르고, "회사 계정"을 체크했다면 회사명까지 입력해야 가입 버튼이 켜진다. 각 위젯이 서로를 직접 참조해 규칙을 처리하면 체크박스가 버튼과 입력란을 알고, 입력란이 버튼을 알고… 위젯…

Continue ReadingC/C++ 디자인 패턴 (16) — 중재자(Mediator)

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

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

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