C++ 디자인 패턴 : Strategy 패턴 (전략 패턴)
게임 캐릭터의 체력 구현 알고리즘을 만들고 있다고 가정하자.
기본 플레이어는 기본 체력 구현 알고리즘을 가지고 있을 것이다.
이 플레이어가 전직을 하여 전사가 되면 방어력이 더욱 강해질 것이고,
마법사로 전직을 하게 되면 방어력이 더욱 약해질 것이다.
위의 방법은 너무나 일반적인 설계이다. 하지만 여기서 캐릭터의
알고리즘의 변경과 알고리즘 자체를 개조할 수 있는 방법이 없을까.
예를 들어 캐릭터가 너프 마법이나 버프 마법을 받게된다면
체력 구현 알고리즘이 달라져야 할 것이다. 전략 패턴을 써보자.
알고리즘을 클래스로 만들어 가상함수를 선언했다.
따라서 이를 상속하는 모든 클래스들은 이 함수를
재정의 할 수 있다. (알고리즘의 조정/개조가 가능해짐)
또한 이 알고리즘의 포인터를 가진 Player클래스는
언제든 체력 알고리즘을 바꿀 수 있는 융통성이 생기게 된다.
이 패턴의 핵심은 한쪽 클래스 계통에 속해 있는
가상 함수를 다른 쪽 계통에 속해 있는 가상 함수로 대체한다는 것이다.
'디자인 패턴' 카테고리의 다른 글
[C++ 디자인 패턴] 함수 포인터로 구현한 전략 패턴 (strategy pattern) (0) | 2017.02.18 |
---|---|
[C++ 디자인 패턴] Biulder 패턴 (빌더 패턴) (0) | 2017.01.18 |
[C++ 디자인 패턴] Abstract Factory (추상 팩토리 패턴) (0) | 2017.01.14 |
[C++ 디자인 패턴] NVI idiom (비가상 함수 인터페이스 관용구) (0) | 2017.01.12 |
[C++ 디자인 패턴] pimpl idiom (pimpl 관용구) (0) | 2017.01.12 |