C/C++ 디자인 패턴 (11) — 플라이웨이트(Flyweight)

문서 편집기의 글자 하나하나를 객체로 만들면 편하지만, 글자마다 글꼴 이름·크기·색을 들고 있으면 10만 글자짜리 문서가 수십 MB를 차지한다. 그런데 서식은 대부분 몇 가지뿐이고, 글자마다 다른 것은 위치 정도다. 플라이웨이트(Flyweight)는 객체의…

Continue ReadingC/C++ 디자인 패턴 (11) — 플라이웨이트(Flyweight)

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

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

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

C++ 고급 문법 (13) — 스마트 포인터(Smart Pointer)

new로 만든 객체는 누군가 정확히 한 번 delete해야 한다. 함수 중간에 return이나 예외가 끼면 해제가 빠지고, 두 곳에서 해제하면 이중 해제가 된다. 스마트 포인터(smart pointer)는 이 "누가 언제 해제하는가"를 타입으로…

Continue ReadingC++ 고급 문법 (13) — 스마트 포인터(Smart Pointer)