반응형

Strategy Pattern, 전략 패턴이라고 한다.

전략이라는 것은 여러 분야에서 쓰인다. 특히 스포츠에서 많이 들을 수 있는 단어이다. 그리고 언제나 전략은 한가지일 수는 없다. 딱히 한가지 방법만 있다고 한다면.. 전략이라고 하기에는 좀 부족하지 않을까. 그냥 공식? 이라고 하는 편이 나을지도 모르겠다. 

이렇게 전략은 항상 다양하게 존재한다. 상황에 따라서 전략을 바꿀수도 있다. 이러한 사상(?)을 담은 패턴이 Strategy 패턴이다.

클래스 다이어크램을 보면 Context 클래스가 존재하고 AStrategy 인터페이스가 존재한다. 그리고 AStrategy 인터페이스를 구현한 ConcreteStrategy 클래스들이 존재한다. 상황에 따라서 ConcreteStategy 클래스를 변경한다!라는 것이다. 

여기에서 주의깊게 봐야할 점은 Context 클래스에 존재하는 AStrategy : aStrategy 이다. Context클래스는 AStrategy를 가지고 있으나 직접 생성하지는 않는 관계이다. (색칠하지 않은 마름모 모양 : Aggregation). 하지만 저 멤버변수를 사용하기 위해 내부에 set메소드를 가지고 있음으로써 사용자가 직접 ConcreteStrategy를 set 할수 있게 만든다. 

따라서 사용자는 기존 코드를 변경하지 않고도 Stategy를 set만 함으로써 전략을 변경 할 수 있다. 



728x90
반응형

'Development > Design Pattern' 카테고리의 다른 글

[데코레이터 패턴]  (0) 2013.06.26
Factory Method Pattern  (0) 2011.08.30
Decorator Pattern  (0) 2011.08.30
Template Method Pattern  (0) 2011.08.30

+ Recent posts