새소식

💻 Programming (프로그래밍)/Unity | C#

[Unity][C#][Design Pattern] Strategy pattern - 전략 패턴

  • -

간단히 상속 할 수 있는 기본적인 인터페이스 혹은 추상화 클래스를 만든다음 그 기능을 메인에서 사용하는 것

 

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

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.