특이한 디자인패턴
다음은 일반적인 GoF 디자인 패턴에 비해 덜 알려졌지만 흥미롭고 특이한 디자인 패턴들입니다:
---
1. Null Object Pattern
개념: 객체가 없음을 null로 표현하지 않고, 아무 작업도 하지 않는 객체를 사용
장점: null 체크 제거, 깔끔한 인터페이스
예시: Logger 인터페이스에 대해 NullLogger는 로그를 출력하지 않음
---
2. Object Pool Pattern
개념: 생성 비용이 큰 객체를 미리 만들어서 재사용
용도: 게임의 총알, 스레드, 데이터베이스 연결 등
장점: 생성/파괴 비용 절감
---
3. Dirty Flag Pattern
개념: 객체의 상태가 변경되었을 때만 계산을 수행하도록 표시
사용 예: 렌더링 엔진, 캐시 시스템
장점: 불필요한 연산 방지
---
4. Component Pattern (Entity-Component-System과 다름)
개념: 상속 대신, 객체를 기능별 컴포넌트로 구성
예시: 게임 캐릭터가 PhysicsComponent, RenderComponent를 가짐
장점: 조합 기반 설계, 유연성 증가
---
5. Type Object Pattern
개념: 런타임에 클래스의 메타정보를 객체로 분리하여 관리
사용 예: RPG 게임에서 아이템 타입을 동적으로 정의
장점: 동적 타입 정의, 코드 재사용
---
6. Extension Object Pattern
개념: 객체에 새로운 기능을 동적으로 덧붙일 수 있는 구조 제공
사용 예: IDE 플러그인, 브라우저 확장
구조: 인터페이스 + ExtensionRegistry
---
7. Double Dispatch / Visitor의 변형
개념: 타입에 따라 여러 객체 간 협력이 필요한 상황에서
특이성: 일반적인 언어 구조에선 안 되는 것을 구현 가능하게 함
사용 예: 충돌 판정, 계산기 연산
---
8. Curiously Recurring Template Pattern (CRTP)
C++ 특화
개념: 자식 클래스가 자기 자신을 부모의 템플릿 인자로 넘김
용도: 정적 다형성, 성능 최적화
---
원하면 위 패턴 중 실제 코드 예제를 붙여드릴 수 있습니다.
특정 분야(예: 게임, 렌더링, GUI 등)에 특화된 특이한 패턴도 원하시면 말씀 주세요.