[디자인 패턴] 스트래터지(전략) 패턴 (Strategy Pattern)

oy Hong·2024년 4월 13일

기술

목록 보기
15/23

스트래터지(전략) 패턴 (Strategy Pattern)

클래스를 확장하지 않고 클래스의 행동을 변경할 수 있도록 하는 기법이다. 구체적인 클래스와 알고리즘 사이의 결합도를 낮추는 디자인 패턴이다.

상속을 대체하는 패턴이다.


장점

  • 구체 클래스를 수정하는 일이 줄어듦
  • 유지보수 용이

사용 예시

게임의 무기 사용을 예시로 들어보자.

public interface IWeapon
{
	void Attack();
}

public class Sword : IWeapon
{
	public void Attack()
    {
        //.. 검을 휘두른다
    }
}

public class Gun : IWeapon
{
	public void Attack()
    {
        //.. 총을 쏜다
    }
}

public class Player
{
	public void Attack(IWeapon weapon)
    {
    	weapon.Attack();
    }
}

UML

이런 식으로 플레이어가 무기를 변경한다고 해도 무기들의 IWeapon의 정의만 알고 있으면 플레이어의 코드 변경 없이 교체가 가능하다.

0개의 댓글