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

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

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

C/C++ 디자인 패턴 (3) — 팩토리 메서드(Factory Method)

내보내기 기능을 만든다고 하자. "헤더를 쓰고, 행을 하나씩 쓰고, 마무리한다"는 절차는 CSV든 JSON이든 같은데, 어떤 Writer 객체를 쓸지만 다르다. 이 절차를 가진 부모 클래스가 new CsvWriter를 직접 부르면 JSON을 지원할…

Continue ReadingC/C++ 디자인 패턴 (3) — 팩토리 메서드(Factory Method)

C++ 예제로 배우는 소프트웨어 설계 기법 (4) — 싱글톤(Singleton)

설정, 로거, 입력 장치처럼 프로그램 전체에 하나만 있어야 하는 객체가 있다. 전역 변수로 두면 누구나 새로 만들 수 있고, 생성 시점도 통제할 수 없다. 싱글톤(Singleton)은 생성자를 막고 정적 접근 함수…

Continue ReadingC++ 예제로 배우는 소프트웨어 설계 기법 (4) — 싱글톤(Singleton)

C++ 고급 문법 (20) — CRTP(Curiously Recurring Template Pattern)

지난 글에서 본 가상 함수는 호출마다 vtable을 거치는 간접 호출이라 인라인되지 않는다. 하지만 어떤 파생 타입을 쓸지 컴파일 시점에 이미 정해져 있다면 실행 시점 디스패치는 필요 없다. CRTP(Curiously Recurring Template…

Continue ReadingC++ 고급 문법 (20) — CRTP(Curiously Recurring Template Pattern)