전략 패턴이란?
알고리즘 군을 정의하고 캡슐화하여, 알고리즘군을 교체(수정)하여 쓸 수 있도록 한다.
즉, 객체들이 할 수 있는 행위 각각을 클래스로 생성하고, 유사한 행위를 캡슐화하여 인터페이스를 정의한다.
동적으로 행위의 수정이 필요한 경우 전략을 바꾸는 것 만으로 행위의 수정이 가능하다.
예제 코드
public class Moving {
private MovableStrategy movableStrategy;
public void move(){
movableStrategy.move();
}
public void setMovableStrategy(final MovableStrategy movableStrategy){
this.movableStrategy = movableStrategy;
}
}
public class Bus extends Moving {}
public class Car extends Moving {}
public class Client {
public static void main(String args[]){
Moving car = new Car();
Moving bus = new Bus();
/*
기존의 기차와 버스의 이동 방식
1) 기차 - 오프로드, 도로
2) 버스 - 도로
*/
car.setMovableStrategy(new OffLoadStrategy());
bus.setMovableStrategy(new LoadStrategy());
car.move();
bus.move();
/*
선로를 따라 움직이는 버스가 개발되어 전략 교체
*/
bus.setMovableStrategy(new RailLoadStrategy());
bus.move();
}
}