// 서브시스템 1: TV
class TV {
public void on() {
System.out.println("TV is On");
}
public void off() {
System.out.println("TV is Off");
}
}
// 서브시스템 2: DVD 플레이어
class DVDPlayer {
public void on() {
System.out.println("DVD Player is On");
}
public void play() {
System.out.println("DVD is Playing");
}
public void stop() {
System.out.println("DVD Stopped");
}
public void off() {
System.out.println("DVD Player is Off");
}
}
// 서브시스템 3: 스피커
class Speaker {
public void on() {
System.out.println("Speaker is On");
}
public void off() {
System.out.println("Speaker is Off");
}
}
// 파사드: 홈시어터 시스템의 단순화된 인터페이스 제공
class HomeTheaterFacade {
private TV tv;
private DVDPlayer dvdPlayer;
private Speaker speaker;
public HomeTheaterFacade(TV tv, DVDPlayer dvdPlayer, Speaker speaker) {
this.tv = tv;
this.dvdPlayer = dvdPlayer;
this.speaker = speaker;
}
public void watchMovie() {
tv.on();
speaker.on();
dvdPlayer.on();
dvdPlayer.play();
System.out.println("Enjoy the movie!");
}
public void endMovie() {
dvdPlayer.stop();
dvdPlayer.off();
speaker.off();
tv.off();
System.out.println("Movie ended, system is off.");
}
}
// 클라이언트: 파사드를 통해 시스템을 단순화하여 사용
public class Main {
public static void main(String[] args) {
TV tv = new TV();
DVDPlayer dvdPlayer = new DVDPlayer();
Speaker speaker = new Speaker();
HomeTheaterFacade homeTheater = new HomeTheaterFacade(tv, dvdPlayer, speaker);
// 영화 시청 시작
homeTheater.watchMovie();
// 영화 종료
homeTheater.endMovie();
}
}
컨트롤러가 여러개 일때나 필요하지 굳이 내 생각에는 여기 과제에서 쓸일은 없어 보인다.
적어도 여기서의 적용 예시가도움이 되지는 않는다.