반응형
Strategy Pattern?
- 전략 패턴(Strategy Pattern) : 알고리즘군을 정의하고 각각을 캡슐화해서 실행중에 알고리즘을 선택할 수 있는 행위 패턴이다.
* 한마디로, 행위 자체를 인터페이스로 선언하고 각각의 알고리즘은 클래스로 상속받아서 오버라이딩 하는 방식이다.
* 조금 더 쉽게 말하자면, 행동 이름자체는 똑같지만, 내용을 다르게 하기 위해 사용한다!!
Why 전략 패턴?
* 알고리즘 자체가 랜덤(Random) 로직이 포함될 경우, 테스트가 불가능해지는 현상이 있다.
-> 이를 해결하기 위해, 정적인 로직을 갖는 알고리즘과 랜덤 로직을 갖는 알고리즘을 분리하여 테스트한다!
* 위 예시는 수많은 사례중 하나이고, 많은 인터넷 블로그들은 Fly 라는 인터페이스를 주로 예시로 하더라!!
사용 예시
package strategy;
public interface RockScissorPaper {
String submit();
}
가위바위보 인터페이스가 있다고 가정해보자!
가위바위보 게임을 할 때, 사람들은 각자 (가위, 바위, 보) 셋 중에서 골라서 제출하게 된다!!
- 그러면, 제출하다의 동사는 똑같아도 내용물은 다르지 않을까?
package strategy;
public class Rock implements RockScissorPaper {
@Override
public String submit() {
return "Rock";
}
}
1. 바위
package strategy;
public class Scissor implements RockScissorPaper {
@Override
public String submit() {
return "Scissor";
}
}
2. 가위
package strategy;
public class Paper implements RockScissorPaper {
@Override
public String submit() {
return "Paper";
}
}
3. 보
- 가위바위보 라는 인터페이스를 통해서 각자의 클래스가 행위를 다르게 오버라이딩한 모습이다!!
- 결과적으로, 행위 자체는 똑같지만 내용은 달라진 모습이다!!
정리
- 전략패턴은 Client가 전략을 생성해서 전략을 실행할 Context에게 주입하는 패턴이다.
- 동일한 행위에 대한 내용을 다르게 하고 싶을 때 설정한다!
참고
전략 패턴 - 위키 백과
반응형
'Developer > Design Pattern' 카테고리의 다른 글
Template Method Pattern - 템플릿 메소드 패턴 (0) | 2019.06.09 |
---|---|
Observer Pattern - 옵저버 패턴 (0) | 2019.06.09 |
Visitor Pattern - 비지터 패턴, 방문자 패턴 (2) | 2019.05.26 |
Singleton Pattern - 싱글톤 패턴 (6) | 2019.05.24 |
Design Pattern - 소개 (2) | 2019.05.24 |