간단히 상속 할 수 있는 기본적인 인터페이스 혹은 추상화 클래스를 만든다음 그 기능을 메인에서 사용하는 것
ex) 아래 코드 예시
공격방법(interface 클래스, 인터페이스는 주로 앞에 I를 붙혀줍니다)
근접공격, 원거리공격 - 이라는 인터페이스를 상속받은 공격 클래스를 생성
그다음 PlayerCharacter이란 클래스를 객체로 만들어 어택을 사용하는 느낌
using System;
// 전략 인터페이스
public interface IAttackStrategy
{
void Attack();
}
// 공격 전략 1
public class MeleeAttack : IAttackStrategy
{
public void Attack()
{
Console.WriteLine("근접 공격!");
}
}
// 공격 전략 2
public class RangedAttack : IAttackStrategy
{
public void Attack()
{
Console.WriteLine("원거리 공격!");
}
}
// 캐릭터 클래스
public class Character
{
private IAttackStrategy attackStrategy;
public Character(IAttackStrategy strategy)
{
this.attackStrategy = strategy;
}
public void SetAttackStrategy(IAttackStrategy strategy)
{
this.attackStrategy = strategy;
}
public void Attack()
{
attackStrategy.Attack();
}
}
class Program
{
static void Main()
{
// 캐릭터 생성 및 근접 공격 전략 설정
Character player = new Character(new MeleeAttack());
player.Attack();
// 원거리 공격 전략으로 변경
player.SetAttackStrategy(new RangedAttack());
player.Attack();
}
}