Stategy Pattern

순후추·2023년 11월 15일
0

디자인패턴

목록 보기
9/11

Stategy Pattern 의 장단점

장점

  • 단일 책임 원칙
  • 코드를 수정하지 않고 추가에는 긍정적으로 작용 할 수 있다.

단점

  • 상태들간의 상호작용을 구현하는데에 어려움이 있다.
  • 클래스 수가 많아지므로 코드량이 늘어난다

구성요소

Context : 전략을 사용하는 Class
IStrategy : Context Class 에 넣는 Interface

샘플 코드

총알, 화살, 미사일로 구분하여 전략 패턴을 간단하게 구현 해 보았다.
public interface IWeapon
{
    void Attack();
}

public class Bullet : IWeapon
{
    public void Attack() 
    {
        Debug.Log("Bullet Attack");
    }    
}

public class Arrow : IWeapon
{
    public void Attack()
    {
        Debug.Log("Arrow Attack");
    }
}

public class Missile : IWeapon
{
    public void Attack()
    {
        Debug.Log("Missile Attack");
    }
}

public class MyWeapon
{
    private IWeapon weapon;

    public MyWeapon(IWeapon weapon)
    {
        this.weapon = weapon;
    }

    public void SetWeapon(IWeapon weapon)
    {
        this.weapon = weapon;
    }

    public void Attack()
    {
        weapon.Attack();
    }
}


public class WeaponManager
{
    private MyWeapon weapon;

    public void ChangeBullet()
    {
        weapon.SetWeapon(new Bullet());
    }

    public void ChangeMissile()
    {
        weapon.SetWeapon(new Missile());
    }

    public void ChangeArrow()
    {
        weapon.SetWeapon(new Arrow());
    }

    public void Attack()
    {
        if (weapon == null)
            return;

        weapon.Attack();    
    }
}
profile
게임 개발 블로그

0개의 댓글

관련 채용 정보