디자인 패턴
[C++ 디자인 패턴] Strategy 패턴 (전략 패턴)
GrayT
2017. 1. 13. 18:24
C++ 디자인 패턴 : Strategy 패턴 (전략 패턴)
게임 캐릭터의 체력 구현 알고리즘을 만들고 있다고 가정하자.
기본 플레이어는 기본 체력 구현 알고리즘을 가지고 있을 것이다.
이 플레이어가 전직을 하여 전사가 되면 방어력이 더욱 강해질 것이고,
마법사로 전직을 하게 되면 방어력이 더욱 약해질 것이다.
위의 방법은 너무나 일반적인 설계이다. 하지만 여기서 캐릭터의
알고리즘의 변경과 알고리즘 자체를 개조할 수 있는 방법이 없을까.
예를 들어 캐릭터가 너프 마법이나 버프 마법을 받게된다면
체력 구현 알고리즘이 달라져야 할 것이다. 전략 패턴을 써보자.
알고리즘을 클래스로 만들어 가상함수를 선언했다.
따라서 이를 상속하는 모든 클래스들은 이 함수를
재정의 할 수 있다. (알고리즘의 조정/개조가 가능해짐)
또한 이 알고리즘의 포인터를 가진 Player클래스는
언제든 체력 알고리즘을 바꿀 수 있는 융통성이 생기게 된다.
이 패턴의 핵심은 한쪽 클래스 계통에 속해 있는
가상 함수를 다른 쪽 계통에 속해 있는 가상 함수로 대체한다는 것이다.