여러 알고리즘을 캡슐화하고 상호 교환 가능하게 만드는 패턴이다.
public interface Speed {
void blueLight();
void redLight();
}
public class Faster implements Speed {
@Override
public void bluePrint() {
System.out.println("무궁화 꽃이");
}
@Override
public void redPrint() {
System.out.println("피었습니다.");
}
}
public class Fastest implements Speed {
@Override
public void blueLight() {
System.out.println("무관꼬치");
}
@Override
public void redLight() {
System.out.println("피어씀미다.");
}
}
public class Normal implements Speed {
@Override
public void blueLight() {
System.out.println("무 궁 화 꼬 오 옷 이");
}
@Override
public void redLight() {
System.out.println("피 어 었 씀 미 다");
}
}
public class BlueLightRedLight {
public void blueLight(Speed speed) {
speed.blueLight();
}
public void redLight(Speed speed) {
speed.redLight();
}
}
public class Client {
public static void main(String[] args) {
BlueLightRedLight game = new BlueLightRedLight();
game.blueLight(new Normal());
game.redLight(new Fastest();
game.blueLight(new Speed() {
@Override
public void blueLight() {
System.out.println("blue light");
}
@Override
public void redLight() {
System.out.println("red light");
}
});
}
}