C/C++ 디자인 패턴 (21) — 템플릿 메서드(Template Method)
CSV, JSON, 엑셀에서 데이터를 가져오는 기능은 "읽기 → 걸러내기 → 저장 → 알리기"라는 같은 순서를 따르고, 읽는 방법만 다르다. 형식마다 이 순서를 복사해 두면 단계 하나를 추가할 때 모든 복사본을…
CSV, JSON, 엑셀에서 데이터를 가져오는 기능은 "읽기 → 걸러내기 → 저장 → 알리기"라는 같은 순서를 따르고, 읽는 방법만 다르다. 형식마다 이 순서를 복사해 두면 단계 하나를 추가할 때 모든 복사본을…
입력창(LineEdit)은 키 입력을 받아 문자열을 만드는 흐름은 늘 같다. 반면 숫자만 받을지, 우편번호 5자리를 받을지 같은 검증 규칙은 쓰는 곳마다 다르다. 이렇게 변하지 않는 코드와 변하는 코드를 어떻게 나누느냐가 설계의…
pthread_create 같은 OS 스레드 API는 void* (*)(void*) 형태의 C 함수 포인터만 받는다. 스레드에서 객체의 멤버 함수를 돌리고 싶어도 그대로 넘길 수 없다. 그래서 C 콜백 API를 클래스로 감싸는 첫 단계가…
도형마다 넓이를 계산하는 방법은 다르지만, "도형"이라는 객체 자체는 넓이를 정할 방법이 없다. 그렇다고 Shape::area()가 0을 반환하게 두면 파생 클래스가 재정의를 빠뜨려도 조용히 0이 나온다. 순수 가상 함수(pure virtual function) =…