1. 디자인 패턴
1. 팩토리 패턴
- ‘공장’이라는 특수 오브젝트 지정
- 하나의 레벨에서 ‘제품’의 생산과 관련된 많은 세부 사항을 캡슐화
- 공통의 인터페이스나 기본 클래스를 따르는 경우
- 제품에 고유의 제조 로직을 더 포함하여 공장 자체에서는 보이지 않도록 할 수 있음
-> 확장성이 높아짐

- 장점
- 많은 제품을 설정할 때 가장 유용
- 공장 코드를 비교적 짧게 유지
- 단점
- 이때 패턴을 구현하려면 다수의 클래스와 서브 클래스를 만들어야 함
- 약간의 오버헤드가 발생
2. 오브젝트 풀
- 많은 수의 게임 오브젝트를 생성하고 파괴할 때 CPU의 부담을 줄이는 최적화 기법
- 비활성화된 풀에서 준비된 상태로 대기
- 풀에서 게임 오브젝트를 요청하고 활성화, 사용이 끝난 오브젝트는 파괴하는 대신 비활성화
- GC(가비지 컬렉션) 줄임
- UnityEngine .Pool: 스택 기반 ObjectPool을 제공 (CollectionPool(List, HashSet, Dictionary 등)도 사용 가능
- 패턴을 처음부터 다시 만들 필요가 없어져 그만큼 시간 단축
3. 싱글톤 패턴
- 클래스가 자체의 인스턴스 하나만을 인스턴스화하도록 보장
- 해당하는 하나의 인스턴스에 대한 손쉬운 글로벌 액세스 제공
- 전체 씬에서 행동을 조정하는 오브젝트가 정확히 하나만 필요할 때 유용
- 장점
- 코어 패턴 자체가 다소 직관적
- 사용자 친화적, 공용 및 정적 인스턴스만 참조하면 됨, 씬의 어떤 오브젝트에서도 항상 사용 가능
- 항상 글로벌 액세스가
가능하므로, 속도가 느린 경향이 있는 GetComponent 또는 Find 연산의 결과를 캐시하지 않아도 됨
- 단점
- 글로벌 액세스가 필요, 글로벌 인스턴스로 사용하므로 많은 종속성을 숨길 수 있음
- 씬 전반에서 많은 게임 오브젝트의 상태를 변경할 수 있으므로 테스팅에 방해가 될 수 있음
- 결합도가 높아짐 - 리팩터링하기 어려워짐