[TIL-260108] 디자인 패턴 - 2

데비·2026년 1월 8일

본과정

목록 보기
28/79

오늘 배운내용

- 디자인 패턴


오브젝트 풀 패턴

  • 게임에서 반복적으로 생성되고 소멸되는 객체들을 효율적으로 관리하기 위한 패턴이다.
  • 객체 풀 패턴은 미리 생성된 객체들을 풀에 저장해두고, 필요할 때마다 객체를 재사용하여 생성 및 소멸의 오버헤드를 줄인다.
  • 게임에서 객체는 정말 많은데, 이 객체들을 필요한 상황마다 생성해서 사용하거나, 사용이 종료되는 순간마다 없애는 작업이 반복된다면 큰 부하가 걸릴것이다. 미리 큰 메모리 공간을 확보해 둔 후에, 객체의 사용이 끝나도 객체를 지우는 것이 아닌, 잠시 비활성화 해두었다가 재활용하는 방법으로 사용하면 성능상 큰 이득을 볼 수 있다.

컴포넌트 패턴

  • 게임 오브젝트의 동작과 기능을 구현하는 데 사용되는 패턴이다.
  • 각각의 게임 오브젝트는 여러 개의 컴포넌트로 구성되며, 컴포넌트는 독립적으로 동작하고 상호작용한다. 다시 말해, 자동차라는 객체가 있는 경우, 이 객체를 만드는 방법으로 엔진객체, 휠 객체 등 세분화 된 객체들을 조립하여 하나의 객체를 구성해 나가는 패턴이다.
  • Unity 엔진에서 만들어내는 객체들이 컴포넌트 패턴의 예시라고 볼 수 있다.
  • 캐릭터를 하나 만들고, 거기에 필요에 따라 물리가 필요하면 물리 객체, 네트워킹이 필요하면 네트워크 관련 객체등을 붙여나가며 원하는 객체를 만들어낸다.

옵저버 패턴

  • 객체 간의 일대다 관계를 구성하여, 한 개체의 상태 변화에 따라 다른 객체들이 자동으로 업데이트되도록 하는 것을 목적으로 한다.
  • 옵저버 패턴은 주제(Subject)와 옵저버(Observer)라는 두 가지 주요 요소로 구성된다.
  • 옵저버는 주제를 구독하고, 주제의 상태가 변경되면 업데이트를 수신하여 필요한 동작을 수행한다.
  • 플레이어으이 정보를 표시하는 UI가 있다고 가정하면, 이 UI가 플레이어의 정보를 항시 받아 출력을 하는 형태는 비효율적이다. 변동사항이 있을 경우에만 관련된 객체들에게 전달시키는 방식을 채용하게되면 객체간의 결합도를 낮추고, 유연성 및 확장성을 제공할 수 있다.

기타 디자인 패턴들 및 유의사항

  • 이외에도 컬렉션 객체를 유용하게 관리하게 도와주는 이터레이터 패턴, 많은 수의 유사한 객체를 관리하기 위한 플라이웨이트 패턴, 플레이어 입력 자체를 캡슐화 하여 상호작용 및 제어 흐름에 도움을 주는 커맨드 패턴, 게임 내에서 객체를 새로 만들어 내는 과정을 단일 지점에 집중시켜 코드 단순화를 이루어낼 수 있는 팩토리 패턴 등 유용한 패턴들이 상당히 많다.

0개의 댓글