객체 생성 부분을 추상화한 팩토리(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 데이터테이블 연동, 추상팩토리와 빌더 패턴
'CS > 디자인패턴' 카테고리의 다른 글
[CS : 디자인패턴] 빌더(Builder)패턴 (0) | 2023.04.28 |
---|---|
[CS : 디자인패턴] 플라이웨이트(Flyweight) (0) | 2023.04.15 |
[CS : 디자인패턴] 싱글톤(Singleton) (0) | 2023.04.13 |