[유니티 TIPS] 객체 생성을 위한 Factory 패턴 | 프로그래밍 디자인패턴

https://www.youtube.com/watch?v=qhtL9EYtB3Q

 

⚙️ 팩토리 패턴의 개요

  • 팩토리 패턴은 객체를 생성할 때 사용하는 디자인 패턴이다.

  • 이 패턴은 다양한 객체를 생성할 수 있도록 하며, 그 예로 특정 공 객체를 생성할 때 사운드를 출력하거나 출력하지 않는 기능이 포함된다.

  • 샘플 코드로 이 패턴의 적용을 확인할 수 있으며, 실행은 간단하다.

 

⚙️ Factory 패턴을 활용한 객체 생성

  • 다양한 아이템이나 퍼즐 기믹을 생성하기 위해서는 직접 생성하는 것이 아니라 팩토리 패턴을 사용하는 것이 효율적이다.

  • 아이템 매니저는 게임 개발에서 거의 필수적이며, FPS 게임에서 다양한 아이템(예: 헬스, 스피드 업 등)에 사용된다.

  • 단순한 아이템 생성을 위해 스위치 케이스를 사용하는 접근 방식은 길어지고 복잡해질 수 있으며, 이는 유지보수에 어려움을 초래할 수 있다.

  • 새로운 개념(예: 버프)을 추가할 때마다 기존 클래스 수정을 반복하게 되는 문제점이 있다.

 

🏭 팩토리 패턴을 통한 객체 생성

  • 팩토리 패턴을 적용하면, 아이템 매니저는 구체적인 아이템 생성의 세부 사항을 팩토리에 위임할 수 있다.

  • 아이템 매니저가 팩토리에 조건을 전달하면, 팩토리는 조건에 맞는 아이템을 생성하여 반환한다.

  • 이 패턴은 유지보수를 쉽게 하고, 새로운 아이템 추가 시 아이템 매니저를 수정할 필요가 없다.

  • 팩토리 패턴은 객체 생성을 위한 패턴으로, 인터페이스와 구현을 분리함으로써 추상화에 의존하여 확장성을 높인다.

  • 구체적인 제품 클래스는 팩토리를 상속받아 인스턴스를 생성하며, 이는 코드의 캡슐화를 통해 더욱 유연한 구조로 발전할 수 있게 한다.

3.1. 팩토리 패턴의 장점과 적용 방법
  • 팩토리 패턴은 팀장님이 가슴 아파하는 상황을 개선하기 위해 적용될 수 있다.

  • 아이템 매니저는 팩토리를 통해 구체적인 아이템의 생성 조건을 넘기고, 해당 조건에 맞는 아이템을 받아오는 구조이다.

  • 이 방식으로 아이템 매니저는 유지보수를 하면서도 특정 아이템만 추가하는 것으로 확장이 가능하다.

  • 팩토리 패턴은 오픈 클로즈드 원칙을 지키며, 여러 개발 원칙을 준수하면서 쉽게 확장할 수 있도록 돕는다.

  • 팩토리는 인터페이스와 구현을 분리하여 사용되므로, 객체 생성 방식의 캡슐화와 확장의 용이함을 제공한다.

3.2. 객체 생성을 위한 팩토리 패턴의 구조
  • 아이 프로덕트와 추상 클래스를 기반으로 한 추상 팩토리 디자인 패턴을 설명하고 있다.

  • 추상 클래스 팩토리는 아이템을 생성하는 메소드만 추가하여 사용하며, 구체적인 프로덕트 A, B를 정의하는 방식이다.

  • 프로덕트 A, B, C 또는 아이템 소드, 아이템 실드와 같은 다양한 구체적인 아이템을 생성할 수 있다.

  • 이 팩토리를 상속받아 구체적인 팩토리 클래스를 제작하고, 인스턴스를 조건에 따라 초기화하여 반환하는 방식으로 구현된다.

3.3. Factory 패턴의 추상화
  • 팩토리 패턴은 추상화에 의존하여 설계된다.

  • 이 접근법은 구체적인 클래스나 아이템에 의존하지 않으므로 쉽게 확장이 가능하다.

3.4. Factory 패턴의 활용과 장점
  • 아이템 매니저는 팩토리라는 중간 개체를 사용하여 아이템을 생성하는 방식이다.

  • 아이템 매니저는 구체적인 구현을 팩토리에 넘기며, 단순히 사용만 할 수 있다.

  • 이 구조 덕분에 아이템 매니저는 아이템 추가 시 수정할 내용이 거의 없거나, 최소한으로 수정이 가능하다.

 

🔍 팩토리 패턴의 개념과 활용

  • 팩토리 패턴은 객체 생성을 위한 디자인 패턴으로, 팩토리 메서드와 추상 팩토리로 나뉘지만 그 경계가 모호할 수 있다.

  • 팩토리 메서드 패턴에 가까운 간단한 예시를 통해 설명되지만, 실제 게임에서는 더 복잡하게 활용된다.

  • 예를 들어, 키-값 딕셔너리를 활용해 다양한 아이템을 생성할 수 있으며, 소더와 같은 아이템들을 다양하게 구현할 수 있다.

  • 보통 이런 팩토리 패턴은 매니저 클래스에서 자주 사용되며, 아이템 매니저와 같은 곳에서 적용된다.

 

5. 🔍 객체 생성 방안에 대한 논의

  • 매니저 역할을 하는 객체는 스태틱화하거나 싱글톤 패턴을 적용할 수 있다.

  • 싱글톤 패턴에 대한 자세한 설명은 후에 있을 예정이다.

  • 아이템 생성이 빈번하므로 오브젝트 풀 패턴과 함께 사용되는 경우가 많다.

  • 일반적으로 이러한 패턴들은 자주 활용되는 방식이다.