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();
}
}