기본적인 구조는 최상위 클래스를 상속받아 그 클래스들에 기능을 추가한다. 라고 보는게 맞을듯.

어떤 상황에 좋은가?

 서로 행위만 다를 뿐 밀접한 연관 관계를 가지는 여러 클래스들에 대해 필요한 시점에 어느 한 행위를 수행하는 클래스를 골라 사용하고자 할 때 유용하다.

 저장 공간 사용 효율이나 실행 시간 효율 등의 측면에서 다양한 형태의 알고리즘(기능)이 존재해서 상황에 따라 최적의 알고리즘(기능)을 선택해서 사용하도록 할 때 유용하다.

 어떤 알고리즘(기능)이 Client가 알아서는 안될 데이터를 사용하거나 알고리즘(기능)에 종속된 복잡한 자료구조(속성)를  사용할 때 유용하다. 이 경우 Strategy 패턴은 Client에게 알고리즘(기능)이 사용하는 데이터나 자료구조(속성)를 숨겨주는 역활을 한다.

 어떤 클래스가 많은 행위를 가지고 있고 이것이 여러 개의 조건문 형태로 쭉 나열되는 형태일 때 많은 조건문 대신 Strategy 패턴을 사용하면 유용하다. 이때 각 조건에 따라 수행할 때용들은 Strategey의 하위 클래스로 정의 될 것이다.

예제의 기능은, 최상위 오리 클래스를 상속 받아,
다양한 오리들을 생성하고, 사용한다.



Duck.h
Duck.Cpp
FlyBehavior.h
FlyBehavior.cpp

QuackBehavior.h
QuackBehavior.h

main.cpp
블로그 이미지

안식의후크

이번에 게임 리뷰와 게임 회사 이야기로 유투브를 오픈했습니다. 많은 관심 부탁드립니다. 유투브에서 "껨보이 채널" 검색