파일첨부 :
참고자료 :
GOF의 디자인 패턴, HeadFirst Design Patterns


패턴 요약

1. 의도
   알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. 스트래티지를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다.

2. 용어설명
   Strategy : 전략
   Composition : 구성, 조립
   Concrete : 구체적인, 구상적인
   다른 이름 : 정책(Policy)

3. 구조

4. 참여객체
  • Strategy : 제공하는 모든 알고리즘에 대한 공통의 연산들을 인터페이스로 정의한다. Context 클래스는 ConcreteStrategy 클래스에 정의한 인터페이스를 통해서 실제 알고리즘을 사용한다.
  • ConcreteStrategy : Strategy인터페이스를 실제 알고리즘으로 구현한다.
  • Context : ConcreteStrategy 객체를 통해 구성된다.


정리

객채지향 프로그래밍을 하다보면 여러 클래스에 동일한, 혹은 비슷한 기능을 하는 메서드들이 생기게 마련이다. HeadFirst DesignPattern 책에서는 이러한 예제로 오리게임을 제시했다. 바로 오리의 날개짓이나 울음소리의 행동에 대한 메서드가 그 예에 해당된다.

책에서는 이러한 특정한 행동들의 여러 객체에 반복되게 나타날경우 그 특정한 행동(알고리즘군)들을 한데 묶어 따로 클래스화시키는 방법을 알려준다. 그게 바로 스트래티지 패턴이라고 한다. 마치 여러 전자제품 회사들이 제각각 리모컨을 따로 만들지 않고, 수신단자만 만들어둔뒤 소비자는 리모컨을 전문으로 만드는 회사에서 리모컨을 구입하여 주파수만 맞춰서쓰는 방식이라고 볼 수 있겠다.

예시가 좀 엉뚱하긴 하지만 나는 그렇게 생각했다. HeadFirst DesignPattern 책에서는 자바를 이용한 예제소스가 나와있는데 C++로 컨버젼 해보았다.

저작자 표시 비영리 변경 금지

'DesignPattern > 행동패턴' 카테고리의 다른 글

Strategy Pattern(스트래티지 패턴)  (0) 2008/12/29
Posted by 태발이

댓글을 달아 주세요