Unity로 이해하는 팩토리 패턴 (Factory Pattern)

2023. 8. 7. 10:55·Unity/Design Pattern
반응형

팩토리 패턴

팩토리 패턴은 슈퍼클래스에서 객체를 생성하기 위한 인터페이스를 제공하지만 서브클래스가 생성될 객체의 유형을 변경할 수 있도록 허용하는 생성 디자인 패턴입니다. 기본적으로 팩토리 클래스를 사용하여 개체 인스턴스를 생성함으로써 개체 생성 프로세스를 추상화합니다.

제품 생성 프로세스가 정의된 조립 라인으로 생각하면 정확한 제품이 필요에 따라 변경될 수 있습니다.

Unity에서 팩토리 패턴 구현

공장 패턴의 작동 방식을 이해하려면 각기 다른 클래스로 표시되는 고블린, 좀비, 뱀파이어 등 다양한 유형의 적을 생성할 수 있는 게임을 상상해 보세요. 각 클래스의 인스턴스를 직접 만드는 대신 팩토리 클래스를 사용하여 이를 수행합니다.

다음은 Enemy 클래스의 초기 구조입니다.

csharpCopy code
public abstract class Enemy
{
    public abstract void Attack();
}

public class Goblin : Enemy
{
    public override void Attack()
    {
        Debug.Log("Goblin attacks!");
    }
}

public class Zombie : Enemy
{
    public override void Attack()
    {
        Debug.Log("Zombie attacks!");
    }
}

public class Vampire : Enemy
{
    public override void Attack()
    {
        Debug.Log("Vampire attacks!");
    }
}

각 적 유형은 'Enemy'의 하위 클래스이며 고유한 'Attack' 메서드가 있습니다. 이제 EnemyFactory 클래스를 만듭니다.

csharpCopy code
public class EnemyFactory
{
    public enum EnemyType
    {
        Goblin,
        Zombie,
        Vampire
    }

    public Enemy CreateEnemy(EnemyType type)
    {
        switch (type)
        {
            case EnemyType.Goblin:
                return new Goblin();
            case EnemyType.Zombie:
                return new Zombie();
            case EnemyType.Vampire:
                return new Vampire();
            default:
                throw new ArgumentException("Invalid enemy type", "type");
        }
    }
}

이 EnemyFactory 클래스는 EnemyType 열거형을 사용하여 해당 Enemy 하위 클래스를 생성합니다.

적을 생성하려면 EnemyFactory를 사용합니다.

csharpCopy code
public class Test : MonoBehaviour
{
    void Start()
    {
        EnemyFactory factory = new EnemyFactory();

        Enemy enemy = factory.CreateEnemy(EnemyFactory.EnemyType.Goblin);
        enemy.Attack();
    }
}

이 예에서는 공장을 사용하여 고블린을 생성했습니다. 팩토리 패턴을 적용하여 서로 다른 Enemy 하위 클래스를 생성하는 프로세스를 간소화하여 코드를 깨끗하고 조직적이며 유연하게 유지했습니다.

결론

팩터리 패턴은 유지 관리 및 재사용이 가능한 코드를 생성하기 위한 핵심 자산으로, 게임 개발 프로세스에서 더 많은 유연성과 적은 결합을 허용합니다. 이 패턴은 게임과 다양한 게임 개체가 커짐에 따라 복잡성을 관리하는 데 특히 유용합니다.

저작자표시 비영리 변경금지 (새창열림)

'Unity > Design Pattern' 카테고리의 다른 글

Unity로 이해하는 상태 패턴 (State Pattern)  (0) 2023.08.09
Unity로 이해하는 옵저버 패턴 (Observer Pattern)  (0) 2023.08.08
Unity로 이해하는 어댑터 패턴 (Adapter Pattern)  (1) 2023.08.06
Unity로 이해하는 전략 패턴(Strategy Pattern)  (0) 2023.07.20
Unity로 이해하는 싱글톤 패턴 (Singleton Pattern)  (0) 2023.03.20
'Unity/Design Pattern' 카테고리의 다른 글
  • Unity로 이해하는 상태 패턴 (State Pattern)
  • Unity로 이해하는 옵저버 패턴 (Observer Pattern)
  • Unity로 이해하는 어댑터 패턴 (Adapter Pattern)
  • Unity로 이해하는 전략 패턴(Strategy Pattern)
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (727)
      • 스마트팜 (1)
      • 상품 추천 (223)
      • DataBase (0)
        • MongoDB (4)
        • PostgreSQL (0)
      • 하드웨어 (18)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    C#
    긴유통기한우유
    스크립트 실행 순서
    믈레코비타멸균우유
    카페24리뷰이관
    파이썬
    cv2
    쇼핑몰리뷰
    programmerlife
    셀레니움
    rtsp
    리뷰이관
    리스트
    learntocode
    라떼우유
    상품 리뷰 크롤링
    리뷰관리
    ipcamera
    유니티
    unity
    list
    codingcommunity
    appdevelopment
    Python
    스크립트 실행
    programming101
    카페24리뷰
    devlife
    스마트스토어리뷰
    codingtips
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
Unity로 이해하는 팩토리 패턴 (Factory Pattern)
상단으로

티스토리툴바