태그: pattern
11편
-
C++ Observer 패턴: weak_ptr로 구독자 수명 관리, 이벤트 타입별 알림, 신호/슬롯
C++ Observer 패턴으로 이벤트 기반 구조를 만드는 방법. 기본 구조, weak_ptr로 댕글링과 누수 방지, 이벤트 타입별 Observer, 신호/슬롯 패턴, 주식 시장 모니터 예제를 정리합니다.
-
C++ Visitor 패턴: 더블 디스패치와 std::variant + std::visit 비교
C++ Visitor 패턴을 더블 디스패치와 std::variant + std::visit 두 가지 방식으로 비교합니다. AST 순회, 상태 머신, overloaded 람다 헬퍼 등 실전 예제와 함정을 다룹니다.
-
C++ Strategy 패턴: 다형성 vs 함수 포인터 vs 람다 vs std::function으로 알고리즘 교체하기
C++ Strategy 패턴으로 알고리즘을 캡슐화하고 런타임에 교체하는 방법. 다형성, 함수 포인터, 람다, std::function 네 가지 구현 비교, 압축 알고리즘 예제와 성능 비교를 정리합니다.
-
C++ State 패턴: 조건문 폭발을 상태 객체로 바꾸기 (TCP·게임 AI·자판기 예제)
C++ State Pattern으로 조건문 폭발을 막는 방법을 TCP·게임 AI·자판기 예제로 설명합니다. Strategy와의 차이, 상태 객체 재사용 트레이드오프, 실전에서 겪은 함정까지 정리했습니다.
-
C++ std::regex 실전: regex_match vs regex_search, 캡처 그룹, 토큰화와 탐욕적 매칭 함정
C++ std::regex로 문자열 검증, URL 파싱, 로그 분석, 치환, 토큰화를 구현하는 방법을 정리합니다. regex_match/search 차이, 캡처 그룹, 이스케이프, 성능, 탐욕적 매칭 함정까지 다룹니다.
-
C++ Proxy 패턴: 가상·보호·캐싱 프록시로 지연 로딩과 접근 제어 구현하기
무거운 객체를 실제로 필요할 때 만드는 가상 프록시, 권한을 확인한 뒤 호출을 넘기는 보호 프록시, 결과를 저장해 두는 캐싱 프록시를 C++로 구현하고, 스마트 포인터와 Copy-on-Write가 프록시의 한 형태인 이유를 데이터베이스 연결 예제로 설명합니다.
-
C++ Mixin 패턴: 템플릿 상속으로 로깅·카운팅 기능 조합하기
템플릿 매개변수로 받은 기반 클래스를 상속해 로깅·카운팅 같은 기능 조각을 필요한 클래스에만 조합하는 C++ Mixin 패턴을 다룹니다. 다중 Mixin, CRTP Mixin, 조건부 기능 선택, 메서드 체이닝을 예제로 보여 줍니다.
-
C++ Factory 패턴 비교: Simple Factory, Factory Method, Abstract Factory, 자동 등록
C++ Factory 패턴으로 객체 생성을 캡슐화하는 방법. Simple Factory, Factory Method, Abstract Factory의 차이, 자동 등록 팩토리, 플러그인 시스템 예제를 정리합니다.
-
C++ Decorator 패턴: 상속 대신 감싸서 기능 붙이기 (스트림·로깅·포매터 예제)
C++ Decorator 패턴으로 상속 없이 객체를 감싸 기능을 덧붙이는 방법을 스트림 데코레이터, 로깅 시스템, 텍스트 포매터 예제로 구현하고, 빌더 스타일로 여러 데코레이터를 조합하는 패턴을 설명합니다.
-
C++ Command 패턴: 요청을 객체로 만들어 Undo/Redo·매크로·트랜잭션 구현하기
C++에서 요청을 Command 객체로 감싸 Undo/Redo 히스토리 스택, 매크로 기록, All-or-Nothing 트랜잭션을 구현합니다. std::function으로 충분한 경우와 객체가 필요한 경우를 가르고, 텍스트 에디터 전체 예제로 구조를 확인합니다.
-
C++ Adapter 패턴: 객체 어댑터 vs 클래스 어댑터로 레거시·외부 API 감싸기
C++에서 호환되지 않는 인터페이스를 연결하는 Adapter 패턴을 조합 방식의 객체 어댑터와 다중 상속 방식의 클래스 어댑터로 구현해 비교하고, 레거시 API 감싸기, 팩토리·템플릿 어댑터, 결제 시스템 예제를 다룹니다.