<디자인패턴입문> 7. Strategy 패턴
by BFine반응형
www.yes24.com/Product/Goods/2918928
가. 무엇인가
a. 전략을 유동적으로!
- 전략패턴의 전략은 방책, 문제를 해결해 갈때의 방법등을 의미한다.
=> 프로그래밍의 경우에는 알고리즘으로 생각해도 좋다.
- 알고리즘(전략)을 빈틈없이 교체해서 같은 문제를 다른방법으로도 해결할수 있도록 도와주는 패턴
나. 만들어본 예제
a. Strategy(전략)의 역할
- 전략을 이용하기 위한 인터페이스 결정
public interface Strategy {
int calculate(int number1,int number2);
}
b. ConcreteStrategy(구체적인 전략)의 역할
- 구체적인 전략(구현체)의 역할이며 인터페이스를 implements해서 로직을 구성한다.
public class AddtionStrategy implements Strategy{
@Override
public int calculate(int number1, int number2) {
return number1 + number2;
}
}
public class SubtractionStrategy implements Strategy{
@Override
public int calculate(int number1, int number2) {
return number1-number2;
}
}
c. Context(문맥)
- Strategy를 이용하는 역할
- concreteStrategy의 인스턴스를 가지고 있고 필요에 따라 그것을 이용한다.
public class Calculater {
private Strategy stragey;
public Calculater(Strategy stragey) {
this.stragey = stragey;
}
public int calculate(int number1,int number2){
return stragey.calculate(number1,number2);
}
}
d. Main
public static void main(String[] args) {
int number1 = 10;
int number2 = 5;
Calculater add = new Calculater(new AddtionStrategy());
Calculater sub = new Calculater(new SubtractionStrategy());
System.out.println(add.calculate(number1,number2));
System.out.println(sub.calculate(number1,number2));
}
}
다. 정리
a. 일부러 Strategy 역할을 만들필요가 있나?
- 전략 패턴에서는 알고리즘 부분을 다른 부분과 의식적으로 분리해서 로직의 인터페이스 부분만 규정하고있다.
- 위임이라는 느슨한 연결을 사용하고 있어서 알고리즘을 용이하게 교환할 수 있다.
- 예로 어떤 게임의 난이도 조절을 간단하게 교체할 수 있다.
Strategy 패턴은 알고리즘 변경을 느슨하게 하는 패턴이다.
반응형
'개발서적 > 디자인패턴입문' 카테고리의 다른 글
<디자인패턴입문> 9. Decorator 패턴 (0) | 2021.05.02 |
---|---|
<디자인패턴입문> 8. Composite 패턴 (0) | 2021.05.01 |
<디자인패턴입문> 6. Abstract Factory 패턴 (0) | 2021.04.26 |
<디자인패턴입문> 5. Bridge 패턴 (0) | 2021.04.25 |
<디자인패턴입문> 4. Prototype 패턴 (0) | 2021.04.24 |
블로그의 정보
57개월 BackEnd
BFine