개발 지식/디자인패턴

타입 객체 패턴

게임만드는학생 2025. 4. 21. 16:48

이것도 사실 책을 읽어도 잘 모르겠다. 

 

수많은 상속 클래스를 만들 때 클래스를 생성하지 않고 타입객체로 대체할 수 있는 방법이다. 

타입 객체라는 것은 그냥 데이터를 통해서 값만 바꾼것이다.

예를 들어

class Monster
{
	int hp;
    string attack;
}

이게 있다고 하자.

몬스터 종류마다 이 값이 전부 다를텐데 이를 하위클래스로 다 만드는 것보다 타입객체를 쓰는게 낫다고한다.

 

class Breed
{
	int hp;
    string attack;
}

이렇게 만들고 

 

이 클래스를 Monster에 추가한다.

class Monster
{
	Breed breed;
    Monster() : hp(breed.hp),attack(breed.attack)
}

이런 방식이다.

 

근데 몬스터마다 동작이 달라지거나 하면 확장성이 오히려 별로일 것 같다는 생각이 든다.

 

gpt는 하이브리드로 사용하는 방식을 추천한다.

data는 타입객체방식처럼 scriptable 오브젝트로 관리하고 행동같은 로직은 상속으로 활용한다.

 

// 데이터는 ScriptableObject로
[CreateAssetMenu(menuName = "SkillData")]
public class SkillData : ScriptableObject {
    public string skillName;
    public float cooldown;
    public GameObject effectPrefab;
}

// 로직은 전략 패턴 or 상태 패턴으로 처리
public interface ISkillLogic {
    void Execute(GameObject user);
}

이렇게 데이터와 로직을 분리하여 사용을  추천한다.

'개발 지식 > 디자인패턴' 카테고리의 다른 글

이벤트 큐 패턴  (0) 2025.04.22
컴포넌트 패턴  (0) 2025.04.22
샌드박스 메서드 패턴  (0) 2025.04.21
바이트코드  (0) 2025.04.21
업데이트 메서드 패턴  (0) 2025.04.21