참조:https://velog.io/@max9106/Java-%EC%A0%84%EB%9E%B5%ED%8C%A8%ED%84%B4strategy-pattern
[[Java] 전략패턴(strategy pattern)
디자인 패턴의 꽃이라고 불릴만큼 많이, 다양하게 사용하는 패턴이다.알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있다. 즉 기존 코드의 변경 없이도 실제 로직을 바꿀
velog.io](https://velog.io/@max9106/Java-%EC%A0%84%EB%9E%B5%ED%8C%A8%ED%84%B4strategy-pattern)
본 패턴은 가장 많이 사용하는 패턴 중에 하나이다.
전략 패턴이란?
디자인 패턴의 꽃이라고 불릴만큼 많이,다양하게 사용하는 패턴이다
알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있다.
즉 기존 코드의 변경 없이도 실제 로직을 바꿀 수 있게 해주는 패턴이다.
public interface MoveStrategy {
int moveValue();
}
public class RandomMove implements MoveStrategy {
private static final int MIN_NUMBER = 0;
private static final int MAX_NUMBER = 9;
@Override
public int moveValue() {
return RandomUtils.nextInt(MIN_NUMBER, MAX_NUMBER);
}
}
public class UnconditionalMove implements MoveStrategy {
private static final int MOVE_STANDARD = 4;
@Override
public int moveValue() {
return MOVE_STANDARD;
}
}
public class Car {
private static final int MOVING_BASELINE = 4;
private int position;
/*...*/
public void move(MoveStrategy moveStrategy) {
if (moveStrategy.moveValue() >= MOVING_BASELINE) {
this.position++;
}
}
}
public class Application {
public static void main(String[] args) {
Car car = new Car();
car.move(new RandomMove());
car.move(new UnconditionalMove());
}
}