티스토리 뷰

전략 패턴에서는 알고리즘을 구현한 부분을 모두 교환할 수 있다.

전략 패턴은 알고리즘을 빈틈없이 교체해서 같은 문제를 다른 방법으로도 쉽게 해결할 수 있도록 도와주는 패턴이다.

 

GitHub - kkoon9/Java-Design-Pattern: Java 언어로 배우는 디자인 패턴 입문 예제 코드

Java 언어로 배우는 디자인 패턴 입문 예제 코드. Contribute to kkoon9/Java-Design-Pattern development by creating an account on GitHub.

github.com

전략 패턴의 등장인물

Strategy(전략)의 역할 - Strategy

Strategy는 전략을 이용하기 위한 인터페이스(API)를 결정한다.

ConcreteStrategy(구체적인 전략)의 역할 - WinningStrategy, ProbStrategy

ConcreteStrategy는 Strategy의 인터페이스(API)를 실제 구현한다.

구체적인 전략(알고리즘)을 실제로 프로그래밍한다.

Context - Player

Context는 Strategy을 이용하는 역할을 한다.

ConcreteStrategy의 인스턴스를 가지고 있으며 필요에 따라 그것을 이용한다.

🤔 굳이 일부러 Strategy 역할을 만들 필요가 있나?

이것은 프로그램을 복잡하게 만드는 것처럼 보이지만 실제로는 그렇지 않다.

위임이라는 느슨한 연결을 사용하고 있으므로 알고리즘을 용이하게 교환할 수 있다.

Strategy 패턴을 사용하면 프로그램의 동작 중에 ConcreteStrategy 역할의 클래스를 교체할 수도 있다.

예시로, 메모리가 적은 환경에서는 속도는 느리지만 메모리를 전략하는 전략을 사용하고, 메모리가 많은 환겨에서는 속도는 빠르지만 메모리를 많이 사용하는 전략을 사용할 수 있다.

관련 패턴

  • Flyweight 패턴
  • Abstract Factory 패턴
  • State 패턴

'JAVA > 디자인 패턴' 카테고리의 다른 글

데코레이터(Decorator) 패턴  (0) 2022.03.23
컴포지트(Composite) 패턴  (0) 2022.03.21
프로토타입 패턴  (0) 2022.03.15
싱글톤(Singleton) 패턴  (0) 2022.03.11
Factory Method 패턴  (0) 2022.03.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
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
글 보관함