본문 바로가기
CS/디자인패턴

[CS : 디자인패턴] 팩토리(Factory)패턴

by 왹져박사 2023. 11. 16.
728x90

 

객체 생성 부분을 추상화한 팩토리(Factory) 패턴. 전의 프로젝트에서 추상팩토리 패턴을 활용하였는데, 팩토리 패턴을 공부하고 추상팩토리패턴과는 어떻게 다른지 알아보겠다. 

 

 

팩토리(Factory) 패턴

 

상속 관계의 두 클래스에서 상위 클래스에서 중요한 뼈대를 결정, 하위 클래스에서 객체 생성에 관한 디테일 결정하는 패턴

 

1. 느슨한 결합

2. 유연성 ↑

3. 유지보수성

 

ChatGPT에게 팩토리 패턴을 물어보니 

1. 간단한 팩토리 패턴

2. 팩토리 메서드 패턴

3. 추상 팩토리 패턴

으로 나누어 예제를 알려주었다. 

 

 

1. 간단한 팩토리 패턴 

using UnityEngine;

// 무기의 베이스 클래스
public abstract class Weapon
{
    public abstract void Fire();
}

// 각각의 무기 클래스
public class Gun : Weapon
{
    public override void Fire()
    {
        Debug.Log("총 발사!");
    }
}

public class Sword : Weapon
{
    public override void Fire()
    {
        Debug.Log("칼 휘두르기!");
    }
}

// 무기를 생성하는 간단한 팩토리 클래스
public class WeaponFactory
{
    public Weapon CreateWeapon(string type)
    {
        if (type == "Gun")
            return new Gun();
        else if (type == "Sword")
            return new Sword();
        else
            return null;
    }
}

// 사용 예시
void Start()
{
    WeaponFactory factory = new WeaponFactory();
    
    Weapon gun = factory.CreateWeapon("Gun");
    gun.Fire();  // 총 발사!

    Weapon sword = factory.CreateWeapon("Sword");
    sword.Fire();  // 칼 휘두르기!
}

 

2. 팩토리 메서드 패턴

위의 팩토리 패턴에 인터페이스를 추가하여,

상위 클래스에서 팩토리 메서드를 선언하고 하위 클래스에서 이를 구현하여 객체를 생성한다. 

 

3. 팩토리메서드패턴과 추상팩토리패턴의 차이

팩토리메서드 패턴 : 하나의 인터페이스 정의, 객체의 타입을 하위 클래스에서 결정

추상팩토리 패턴 : 여러 개의 인터페이스 정의, 객체의 타입을 상위 팩토리 클래스에서 결정

 

 

다음은 전에 프로젝트에서 구현한 추상팩토리 패턴이다.  

 

2023.05.01 - [Project/ 꿈의 왕국 : 영원한 보금자리] - [PJ] UIStage 데이터테이블 연동, 추상팩토리와 빌더 패턴

 

[PJ] UIStage 데이터테이블 연동, 추상팩토리와 빌더 패턴

R&D하고 본 프로젝트에 적용하기 위해 패턴을 공부하였다. 들어가는 요소들을 데이터로 받아오거나 조절해야 하는 부분들이 많았는데, 직접 붙였던 부분을 개선하고 싶었다. chatGPT에게 내 상황

narmhye.tistory.com

 

728x90