컴퓨터 공부/디자인 패턴

[7월 15일 1교시] Strategy Pattern

려리군 2009. 7. 15. 09:45

Strategy Pattern

알고리즘을 모두 교체함.

 

Intent

알고리즘 각각에 대해 클래스로 캡슐화하여 알고리즘을 교환해서 사용한다.

클라이언트와는 독립적으로 알고리즘을 변경

 

Policy라고도 불림.

 

Motivation

예) Text Stream을 시스템마다 라인단위로 구분할 수 있는 프로그램

알고리즘(처리)과 사용자를 분리

구조적으로는 Bridge 패턴과 거의 같다.

 

적용범위

1. 행위들이 조금 다를 뿐 개념적으로 동일한 많은 클래스들이 존재하는 경우.

2. 알고리즘의 변경이 필요한 경우.

3. 복잡한 데이터 구조를 strategy 클래스 내부에 둠으로서 은닉화 가능.

4. 다양한 행위를 다루기 위해 복잡한 다중 조건문들을 사용해야 하는 경우.

=> strategy 패턴과 state 패턴은 비슷.

 

결론

장점

1. 관련 알고리즘 군을 형성한다.

※ 통계모듈은 포트란, 파스칼, C로 된 것이 많다. C++로 wrapping하기 위해 adapter, decorator, mediator등의 패턴을 활용할 수 있다.

2. 서브 클래싱을 사용하지 않는 다른 방법이다.

3. 조건문을 없앨 수 있다.

 

※ Flyweight 패턴은 상태정보를 가지고 있으면 안 된다. 공유가 목적임.