C++/디자인패턴

[C++] 디자인패턴

programmer-faust 2025. 6. 13. 22:24
  • 순서
    1. 디자인패턴이란?
    2. 생성패턴(싱글톤 패턴)
    3. 구조패턴(데코레이 패턴)
    4. 행동패턴(옵저버 패턴)
  • 디자인패턴이란?
    1. 개발 시 반복적으로 등장하는 문제를 해결하기 위한 일반화된 솔루션
  • 생성패턴(싱글톤 패턴)
    1. 생성패턴?: 새로운 것을 만들어내는 방법과 관련된 패턴
    2. 싱글톤 패턴이란?: 프로그램 전체에서 단 하나의 인스턴스만 존재하도록 보장하고, 해당 인스턴스에 전역적으로 접근할 수 있도록 하는 디자인 패턴
    3. 핵심
      • 인스턴스가 월드에 하나만 존재해야하며 전역으로 접근해서 사용해야할 때
      • 생성자를 외부에서 호출할 수 없도록 막고, 정적 메서드를 통해 인스턴스를 반환해야 할 때
    4. 주의해야하는 점
      • 과도하게 사용하면 유연성과 확장성이 떨어지기 때문에 꼭 필요한 경우에만 사용.
    5. Unreal Engine 게임 개발에서 활용 예제 : 전역 데이터 저장이나 게임 전반을 통제하는 "컨트롤 센터" 역할로 사용
      • 게임 전체에서 공통 설정 관리
      • 세이브/로드 관리 시스템
      • 글로벌 데이터(플레이어 정보 등)유지
  • 구조패턴(데코레이 패턴)
    1. 구조패턴이란?: 여러 부품을 조립하고 연결하는 방법에 대한 패턴 - 객체들의 구조를 어떻게 구성할 것인지
    2. 데코레이 패턴이란?: 기존 객체의 구조는 바꾸지 않고, 동적으로 기능을 추가할 수 있게 해주는 패턴
    3. 핵심
      • 상속을 쓰지 않고도 기능 확장이 가능함
      • 기존 클래스에 기능을 추가할 때 클래스를 감싸서 기능을 덧붙이는 구조임
    4. Unreal Engine 게임 개발에서 활용 예제 : AI의 행동에 논리 조건을 붙이는데 사용
      • 플레이어가 근처에 있으면 공격
      • 체력이 낮으면 도망 등 AI행동 조건 부여
  • 행동패턴(옵저버 패턴)
    1. 행동패턴이란?: 부품이 서로 어떻게 상호작용할지에 대한 패턴 - 특정 객체가 변할 때 다른 객체들에 변환된 상태를 어떻게 전달할지
    2. 옵저버 패턴이란?: 한 객체의 상태 변화가 있을 때, 그것에 의존하는 여러 객체에게 자동으로 알림을 보내는 패턴(ex.구독한 sns알림)
    3. 핵심
      • 발행자(Subject)와 구독자(Observer)로 구성
      • Subject가 상태 변화를 감지하면 Observer들에게 알림
    4. Unreal Engine 게임 개발에서 활용 : 이벤트 기반 시스템에서 핵심
      • 체력감소 => UI 업데이트
      • 퀘스트 아이템 획득 => 퀘스트 시스템에 알림
      • 타이머 => 시간 제한 미션 종료