게임개발 캠프 20일차

IIRU·2026년 6월 12일

디자인패턴

개발자들이 '이렇게 하면 더 좋다'라고 방법을 정립해 놓은 것.

심플 팩토리 패턴

생성은 팩토리 한 곳에서 하고, 다른 곳에서는 호출만 하는 방식

class Factory
{
    public static Monster CreateMonster(string type)
    {
        switch (type)
        {
            case "Slime":
                return new Slime();
            case "Orc":
                return new Orc();
        }
        return null;
    }
}

위 처럼 몬스터를 만들 때 함수 하나로 처리 할 수 있도록 만듦.
하지만 개방폐쇄원칙을 위반하였고.
종류 추가할 때 계속 코드를 수정해주어야함.

팩토리 메서드 패턴

심플 팩토리 패턴의 보완형이다.
개방폐쇄원칙을 위반하지 않았고 확장성이 높다.
하지만 객체 종류만큼 클래스의 개수가 늘어난다.

abstract class MonsterFactory
{
    abstract public Monster CreateMonster();
}

class SlimeFactory : MonsterFactory
{
    public override Monster CreateMonster()
    {
        return new Slime();
    }
}

싱글톤

이 클래스는 게임(프로그램) 전체에 하나만 존재해야하는 클래스다.
게임 어디서든 접근이 가능하며, 데이터베이스와 같이 하나만 있는 것이 사용된다.

class GameManager
{
    private static GameManager instance;

    public static GameManager Instance
    {
        get
        {
            if (instance == null)
            {
                instance = new GameManager();
            }
            return instance;
        }
    }
    private GameManager()
    {

    }

    public void Gamestart()
    {
        Console.WriteLine("게임시작");
    }

}

그럼 static과의 차이는 뭐가 있을까?
static 클래스는 객체를 만들 수 없다.
그렇기에 사용에 주의해야한다.

옵저버 패턴

class Player
{


    public void TakeDamage()
    {
        // hp 감소
        // 피격 소리
        // 캐릭터 깜빡임
        // 피격 애니메이션
        // hp게이지 감소
        // 상태이상 

        // hp 클래스
        // soundmanager
        // rendering
        // 캐릭터
        // hpUI
        // 상태이상 관련 클래스
    }
}

위와같이 사용할 경우에
하나의 함수가 엄청 길어지게 되는데
옵저버 패턴을 사용하게 되면 각각의 다른 클래스에 함수를 +- 구독 해제 해주면서 코드 자체의 길이는 짧아진다.
하지만 수정이 필요한 경우가 생기거나 다른클래스에서 구독하는 방식이라 순서가 다르게 설정될 가능성이 있다.

profile
초보 개발자 블로그입니다!

0개의 댓글