public interface CarMoveBehavior {
public void action();
}
인터페이스 Impl
class UpBehavior implements CarMoveBehavior{
@Override public void action() {
System.out.println("Up!");
}
}
class DownBehavior implements CarMoveBehavior{
@Override public void action(){
System.out.println("Down!");
}
}
class LeftBehavior implements CarMoveBehavior{
@Override public void action(){
System.out.println("Left!");
}
}
class RightBehavior implements CarMoveBehavior{
@Override public void action(){
System.out.println("Right!");
}
}
인터페이스 사용 클래스
public class Car {
private CarMoveBehavior carMoveBehavior;
public Car(CarMoveBehavior carMoveBehavior) {
this.carMoveBehavior = carMoveBehavior;
}
public void move(){
carMoveBehavior.action();
}
public void setMoveBehavior(CarMoveBehavior carMoveBehavior)
{
this.carMoveBehavior = carMoveBehavior;
}
}
main
public class Main {
public static void main(String[] args) {
System.out.println("=====Java Strategy Pattern=====");
//Up
Car car1 = new Car(new UpBehavior());
car1.move();
//Down
Car car2 = new Car(new DownBehavior());
car2.move();
//Left
car2.setMoveBehavior(new LeftBehavior());
car2.move();
//Right
car2.setMoveBehavior(new RightBehavior());
car2.move();
}
}
댓글