스크린샷 2023-05-29 오후 4.51.16.png

전략 패턴이란?

알고리즘 군을 정의하고 캡슐화하여, 알고리즘군을 교체(수정)하여 쓸 수 있도록 한다.

즉, 객체들이 할 수 있는 행위 각각을 클래스로 생성하고, 유사한 행위를 캡슐화하여 인터페이스를 정의한다.

동적으로 행위의 수정이 필요한 경우 전략을 바꾸는 것 만으로 행위의 수정이 가능하다.

예제 코드

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();
    }
}