public interface GamingConsole {
void up();
void down();
void left();
void right();
}
public class SuperContraGame implements GamingConsole{
public void up() {
System.out.println("up");
}
public void down() {
System.out.println("Sit down");
}
public void left() {
System.out.println("Go back");
}
public void right() {
System.out.println("Shoot a bullet");
}
}
public class MarioGame implements GamingConsole{
public void up() {
System.out.println("Jump");
}
public void down() {
System.out.println("Go into a hole");
}
public void left() {
System.out.println("Go back");
}
public void right() {
System.out.println("Accelerate");
}
}
public class AppGamingBagic {
public static void main(String[] args) {
var game = new MarioGame();
//var game = new SuperContraGame();
var gameRunner = new GameRunner(game);
gameRunner.run();
}
}
이렇게 인터페이스를 연결해주고 느슨한 결합을 해주면 게임 코드를 직접 고칠 필요 없이 GamingConsole 코드를 수정해주면 된다.