카테고리 없음

특이한 디자인패턴

일기를 쓰는 사람 2025. 4. 21. 16:14

다음은 일반적인 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 등)에 특화된 특이한 패턴도 원하시면 말씀 주세요.