6-16. 15조 디자인 패턴

keubung·2024년 12월 17일

1. 디자인 패턴

1. 팩토리 패턴

  • ‘공장’이라는 특수 오브젝트 지정
  • 하나의 레벨에서 ‘제품’의 생산과 관련된 많은 세부 사항을 캡슐화
  • 공통의 인터페이스나 기본 클래스를 따르는 경우
    • 제품에 고유의 제조 로직을 더 포함하여 공장 자체에서는 보이지 않도록 할 수 있음
      -> 확장성이 높아짐
  • 장점
    • 많은 제품을 설정할 때 가장 유용
    • 공장 코드를 비교적 짧게 유지
  • 단점
    • 이때 패턴을 구현하려면 다수의 클래스와 서브 클래스를 만들어야 함
    • 약간의 오버헤드가 발생

2. 오브젝트 풀

  • 많은 수의 게임 오브젝트를 생성하고 파괴할 때 CPU의 부담을 줄이는 최적화 기법
  • 비활성화된 풀에서 준비된 상태로 대기
  • 풀에서 게임 오브젝트를 요청하고 활성화, 사용이 끝난 오브젝트는 파괴하는 대신 비활성화
  • GC(가비지 컬렉션) 줄임
  • UnityEngine .Pool: 스택 기반 ObjectPool을 제공 (CollectionPool(List, HashSet, Dictionary 등)도 사용 가능
  • 패턴을 처음부터 다시 만들 필요가 없어져 그만큼 시간 단축

3. 싱글톤 패턴

  • 클래스가 자체의 인스턴스 하나만을 인스턴스화하도록 보장
  • 해당하는 하나의 인스턴스에 대한 손쉬운 글로벌 액세스 제공
  • 전체 씬에서 행동을 조정하는 오브젝트가 정확히 하나만 필요할 때 유용

  • 장점
    • 코어 패턴 자체가 다소 직관적
    • 사용자 친화적, 공용 및 정적 인스턴스만 참조하면 됨, 씬의 어떤 오브젝트에서도 항상 사용 가능
    • 항상 글로벌 액세스가
      가능하므로, 속도가 느린 경향이 있는 GetComponent 또는 Find 연산의 결과를 캐시하지 않아도 됨
  • 단점
    • 글로벌 액세스가 필요, 글로벌 인스턴스로 사용하므로 많은 종속성을 숨길 수 있음
    • 씬 전반에서 많은 게임 오브젝트의 상태를 변경할 수 있으므로 테스팅에 방해가 될 수 있음
    • 결합도가 높아짐 - 리팩터링하기 어려워짐
profile
김나영(Unity_6기)

0개의 댓글