Strategy Pattern
2020-11-10
어떤 행동을 캡슐화 하여, 동적으로 행동을 변경할 수 있는 패턴이다.
행동에 해당한는 class 를 만들어서 행동을 사용하는 class 에 주입하는 방식이다.
이동하는 전략 class
public interface MovingStrategy {
void move();
}
public class MovingWithWheel implements MovingStrategy {
@Override
public void move() { System.out.println("굴러감"); }
}
public class MovingWithWing implements MovingStrategy {
@Override
public void move() { System.out.println("날아감"); }
}
이동가능한 것
public class MovableThing {
final String name;
final MovingStrategy movingStrategy;
public MovableThing(String name, MovingStrategy movingStrategy) {
this.name = name;
this.movingStrategy = movingStrategy;
}
public void moveThing() {
movingStrategy.move();
}
}
사용
MovableThing car = new MovableThing("car", new MovingWithWheel());
MovableThing airplane = new MovableThing("airplane", new MovingWithWing());
car.moveThing(); //굴러감
airplane.moveThing(); //날아감