[Design Pattern] 전략 패턴

2025. 4. 2. 23:53·Design Pattern

1. 전략 패턴

전략 패턴은 런타임에

원하는 전략으로 자유롭게 교체하고 실행할 수 있는 디자인 패턴이다.

 

언제 사용해야 할까?

AWeaponClass::Attack()
{
    if (WeaponType == Sword)
     // 검 공격
    else if (WeaponType == Bow)
     // 활 공격
    else if (WeaponType == Staff)
     // 마법 공격
}

무기의 타입에 따라 다른 공격을 수행하고 있다.

해당 코드의 문제는 무기의 타입이 많아질수록

분기문이 점점 많아지고 가독성이 떨어지게 된다.

 

어떻게 바꿀 수 있을까?

여기서 전략패턴을 구현해볼 수 있다.

💠 전략(Strategy) 패턴 - 완벽 마스터하기

AWeaponBase* Weapon = GetWorld()->SpawnActor<AWeaponBase>();

// Bow 전략 적용
IAttackStrategy* BowStrategy = new BowAttackStrategy();
Weapon->SetAttackStrategy(BowStrategy);

Weapon->Attack(); // 🏹 화살을 쏜다!

// 전략 변경 - Staff
IAttackStrategy* StaffStrategy = new StaffAttackStrategy();
Weapon->SetAttackStrategy(StaffStrategy);

Weapon->Attack(); // ✨ 마법을 발사한다!
  1. 클라이언트는 분기문 대신 컨텍스트를 생성한다.
  2. 원하는 전략(검, 활, 지팡이)를 생성하여 컨텍스트에 설정한다.
  3. 그리고 컨텍스트의 공격 함수를 호출하면 해당 전략의 기능이 실행된다.

 

💠 전략(Strategy) 패턴 - 완벽 마스터하기

아래 참고 블로그에서 설명을 정말 잘 해놓으신 것 같다.

나중에 다시 참고하면 좋을 듯 하다.

참고

💠 전략(Strategy) 패턴 - 완벽 마스터하기

 

'Design Pattern' 카테고리의 다른 글

[Design Pattern] 템플릿 메서드  (0) 2025.04.04
[Design Pattern] 상태 패턴 (State Pattern)  (0) 2025.04.03
[Design Pattern] 디자인 패턴  (0) 2025.04.01
[DesignPattern] 모던 객체지향 설계 - 활용 예시  (0) 2025.04.01
[DesignPattern] 모던 객체지향 설계 - 추가 원칙  (0) 2025.03.31
'Design Pattern' 카테고리의 다른 글
  • [Design Pattern] 템플릿 메서드
  • [Design Pattern] 상태 패턴 (State Pattern)
  • [Design Pattern] 디자인 패턴
  • [DesignPattern] 모던 객체지향 설계 - 활용 예시
DevColIn
DevColIn
복잡함을 단순하게
  • DevColIn
    심플한 코딩생활
    복잡함을 단순하게
  • 전체
    오늘
    어제
    • 전체보기 (223)
      • Unreal 부트캠프 (49)
        • TIL (34)
        • 사전캠프 (7)
        • 본캠프 (8)
      • Unrael (10)
        • 환경설정 (0)
        • Basic (19)
        • Component (5)
        • GAS (GameplayAbilitySystem) (3)
        • AI (2)
        • Implement (10)
        • UI (1)
        • Error (1)
        • Network (2)
        • Tip (1)
      • Level Design (5)
      • Math (1)
      • Design Pattern (16)
      • Computer Science (2)
        • Network (1)
        • Database (1)
      • Algorithm (79)
        • Basic (4)
        • Practice (74)
      • C++ (4)
        • Basic (4)
      • Tool (0)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    KPT회고
    unreal
    게임동기화
    사전캠프
    actor
    디자인 패턴
    gas
    디자인패턴
    Algorithm
    Implement
    레벨디자인
    소프트 레퍼런신
    Animation
    알고리즘
    basic
    assetmanager
    AI
    c++
    하드 레퍼런싱
    component
    내일배움캠프
    Design Pattern
    unrealengine
    Til
    GameplayEffect
    DesignPattern
    액터
    tsoftobjectptr
    본캠프
    퀘스트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
DevColIn
[Design Pattern] 전략 패턴
상단으로

티스토리툴바