이것도 사실 책을 읽어도 잘 모르겠다.
수많은 상속 클래스를 만들 때 클래스를 생성하지 않고 타입객체로 대체할 수 있는 방법이다.
타입 객체라는 것은 그냥 데이터를 통해서 값만 바꾼것이다.
예를 들어
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 |