본문 바로가기

[게임 개발자를 위한 C++ 문법] 디자인 패턴

@iamrain2025. 8. 25. 15:50
디자인 패턴이란 개발 시 반복적으로 등장하는 문제를 해결하기 위한 일반화된 솔루션이라고 정의할 수 있다.

디자인 패턴의 구분

크게 3개로 구분된다.

  • 생성(Creational) 패턴
    새로운 것을 만드는 방법과 관련된 패턴
  • 구조(Structual) 패턴
    조립하고 연결하는 방법에 대한 패턴
  • 행동(Behavioral) 패턴
    어떻게 상호작용할지에 대한 패턴

 

생성 패턴

싱글톤 패턴

예를 들어 싱글 게임을 만든다고 할 때, 한명의 플레이어가 제어할 수 있는 대상은 하나만 존재해야 한다.

이 때 싱글톤 패턴을 적용하여 구현할 수 있다.

 

객체의 생성 및 대입을 `private`으로 하고 `getInstance()`를 통해서만 인스턴스를 받는다.

 

이렇게 객체를 하나만 생성해서 이후에 호출되는 생성자에 대해서는 기존의 인스턴스를 전달하는 패턴을 싱글톤 패턴이라고 한다.

 

구조 패턴

데코레이터 패턴

데코레이터 패턴은 객체의 핵심 기능을 보존하면서, 동적으로 확장할 수 있도록 감싸주는 디자인 패턴이다.

 

A 클래스를 감싸는 A 데코레이터 클래스를 생성하여, 내부에 A의 기능을 가지도록 하고 추가적인 확장이 필요할 때 A를 확장하는게 아니라 A 데코레이터 클래스를 상속받아 사용하는 식으로 동작한다.

 

행동 패턴

옵저버 패턴

옵저버 패턴은 여러 객체에 자신이 관찰 중인 객체에 발생하는 모든 이벤트에 대하여 알리는 구독 메커니즘을 정의할 수 있도록 하는 디자인 패턴이다.

 

유튜브에서 새로운 영상이 올라온다고 계속 알림이 오는 것이 아니라 구독한 채널에서만 알림이 오는 것처럼 옵저버 패턴을 사용하여 옵저버를 상속해 구현한 클래스만 변경을 적용하는 식으로 동작한다.

iamrain
@iamrain :: Annals of Unreal

iamrain 님의 블로그 입니다.

공감하셨다면 ❤️ 구독도 환영합니다! 🤗

목차