오늘은 지난 시간에 이어 전략 패턴에 대해 알아볼까 합니다.
2024.10.08 - [디자인 패턴] - 디자인 패턴에 대해 알아보자#2 싱글톤 패턴(feat. 유니티)
전략 패턴이란?
간단하게 정리하자면
비슷한 동작을 하는 여러 알고리즘을 만들어 두고 ,
필요할 때마다 교체할 수 있도록 만든 패턴입니다.
이렇게 함으로써 후에 새로운 전략을 추가하기도 쉽고
코드의 재사용성을 높일 수 있습니다.
(동적으로 실행될 수 있는 부분들을 캡슐화)
예시
// 전략 인터페이스 정의 : Move
public interface IMovementStrategy
{
void Move(Transform transform);
}
public class Character : MonoBehaviour
{
private IMovementStrategy movementStrategy;
// 전략을 교체
public void SetMovementStrategy(IMovementStrategy strategy)
{
movementStrategy = strategy;
}
void Update()
{
movementStrategy?.Move(transform);
}
}
// 전략 알고리즘 1
public class WalkStrategy : IMovementStrategy
{
public void Move(Transform transform)
{
// 걷기 구현
transform.position += Vector3.forward * 1f;
}
}
// 전략 알고리즘 2
public class RunStrategy : IMovementStrategy
{
public void Move(Transform transform)
{
// 달리기 구현
transform.position += Vector3.forward * 3f;
}
}
언제 사용하면 좋을까?
행동들이 조금씩 다른, 비슷한 클래스들이 많이 존재할 때
노출하지 말아야 할 자료 구조가 있을 때
하나의 클래스 안에서 복잡한 다중 조건문의 모습을 하고 있을 때
사용하면 좋다고 합니다.
마무리
결국 상속 관계가 핵심인 듯합니다.
UI 관리에도 사용되고, 스킬에도 사용되고
여러 방면에서 자주 사용되는 듯하여 간단하게나마 정리해 봤습니다.
지금 보니 은연중에 쓰고 있었던 거 같기도 하네요
다음 시간에는 팩토리 패턴에 대해 정리해 보겠습니다.
참고한 자료
https://youtu.be/ic2tGGQrq1c?si=fG1JVTzVl0OrLQEY
'디자인 패턴' 카테고리의 다른 글
디자인 패턴 - MVC(Model-View-Controller)패턴에 대해 알아보자(+ MVP, MVVM) (0) | 2024.11.07 |
---|---|
디자인 패턴에 대해 알아보자#5 옵저버 패턴 (Oberserver) (0) | 2024.11.05 |
디자인 패턴에 대해 알아보자#4 - 팩토리 패턴 (Factory Pattern) (feat : 팩토리 메소드, 추상 팩토리 패턴) (0) | 2024.10.31 |
디자인 패턴에 대해 알아보자#2 싱글톤 패턴(feat. 유니티) (1) | 2024.10.08 |
디자인 패턴에 대해 알아보자 #1 Solid 원칙 (0) | 2024.10.07 |