Strategy
디자인 패턴의 가장 중요한 패턴으로 다음 3가지의 요소로 구성된다.
전략객체를 가진 전략 객체
public interface Action {
void move();
}
전략 객체의 구현
public class Walking implements Action {
@Override
public void move() {
System.out.println("Walking road");
}
}
public class Running implements Action {
@Override
public void move() {
System.out.println("Running road");
}
}
전략 객체를 사용하는 컨텍스트 (소비)
public class Human {
void start(Action action) {
System.out.println("Start Action");
action.move();
System.out.println("End Action");
}
}
전략 객체를 생성해 컨텍스트에 주입하는 클라이언트 (공급)
public class Client {
public static void main (String[] args) {
Human human = new Human();
Walking walk = new Walking();
human.start(walk);
Running run = new Running();
human.start(run);
}
}
Start Action
Walking road
End Action
Start Action
Running road
End Action
클라이언트가 전략을 생성하여 전략을 실행 (소비) 할 컨텍스트에게 주입하는 패턴이다.
템플릿 메소드 패턴과 유사하지만 다양한 전략을 변경하면서 컨텍스트에게 주입할 수 있다. (템플릿 메소드보다 우수)