달력

08

« 2018/08 »

  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  

'Strategy'에 해당되는 글 1

  1. 2010.04.03 스트레티지(strategy) 패턴





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

어떤 상황에 좋은가?

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

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

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

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

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



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

QuackBehavior.h
QuackBehavior.h

main.cpp
Posted by 안식의후크