내일배움캠프 40일차 TIL - 전략 패턴

권태하·2024년 6월 12일
0
post-thumbnail

플레이어가 무기나 상태에 따라 공격 방식이 달라지게 하려면 어떤 디자인 패턴이 유용할까?

꾸준 실습에 나온 내용을 바탕을 미루어 보아 전략 패턴이 이 방식에 적합하다는 것으로 보인다.

그럼 전략 패턴은 어떤식으로 만들어질까?

전략 패턴

전략 패턴은 알고리즘을 캡슐화하여 동적으로 알고리즘을 교체할 수 있게 하는 디자인 패턴이라고 한다.

예시에 나온 코드는 다음과 같다.

public interface IWeaponState
{
    void Attack();
}

public class BowState : IWeaponState
{
    public void Attack()
    {
        Debug.Log("Bow Attack");
    }
}

public class SwordState : IWeaponState
{
    public void Attack()
    {
        Debug.Log("Sword Attack");
    }
}

public class CommandPatten : MonoBehaviour
{
    private IWeaponState _weaponState;

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Alpha1))
        {
            _weaponState = new BowState();
        }
        else if (Input.GetKeyDown(KeyCode.Alpha2))
        {
            _weaponState = new SwordState();
        }

        if (Input.GetKeyDown(KeyCode.Space))
        {
            _weaponState.Attack();
        }
    }
}

인터페이스 IWeaponState를 상속받는 무기 클래스를 만들고 각각의 공격 방식을 설계한다.
그리고 플레이어가 가지고 있는 인터페이스를 교체하는 알고리즘을 만들고 현재 들고있는 IWeaponState를 가진 클래스의 Attack 함수를 호출한다.

profile
스터디 로그

0개의 댓글

관련 채용 정보