组建一个家庭影院含有以下设备:DVD、投影仪、自动屏幕、音响、爆米花机、灯光,要求完成家庭影院的所有功能,过程为:

在调用端创建各个设备的对象,然后组织在一起完成整个过程


/***
* @author shaofan
* @Description 外观模式解决影院问题
*/
public class FamilyCinema {
public static void main(String[] args) {
Facade facade = new Facade();
facade.ready();
facade.play();
facade.pause();
facade.end();
}
}
class Facade{
private DVDPlayer dvdPlayer;
private Popcorn popcorn;
private Projector projector;
private Screen screen;
private Stereo stereo;
private Light light;
public Facade(){
this.dvdPlayer = DVDPlayer.getInstance();
this.popcorn = Popcorn.getInstance();
this.projector = Projector.getInstance();
this.screen = Screen.getInstance();
this.stereo = Stereo.getInstance();
this.light = Light.getInstance();
}
/**
* 准备工作
*/
public void ready(){
popcorn.on();
popcorn.run();
screen.down();
projector.on();
stereo.on();
dvdPlayer.on();
light.dim();
}
public void play(){
dvdPlayer.run();
}
public void pause(){
dvdPlayer.pause();
}
public void end(){
light.light();
popcorn.off();
dvdPlayer.off();
projector.off();
screen.up();
stereo.off();
}
}
class DVDPlayer{
private static final DVDPlayer INSTANCE = new DVDPlayer();
public static DVDPlayer getInstance(){
return INSTANCE;
}
public void on(){
System.out.println("dvd on");
}
public void off(){
System.out.println("dvd off");
}
public void run(){
System.out.println("dvd is running");
}
public void pause(){
System.out.println("dvd is pause");
}
}
class Popcorn{
private static final Popcorn INSTANCE = new Popcorn();
public static Popcorn getInstance(){
return INSTANCE;
}
public void on(){
System.out.println("popcorn on");
}
public void off(){
System.out.println("popcorn off");
}
public void run(){
System.out.println("popcorn is running");
}
}
class Projector{
private static final Projector INSTANCE = new Projector();
public static Projector getInstance(){
return INSTANCE;
}
public void on(){
System.out.println("projector on");
}
public void off(){
System.out.println("projector off");
}
public void run(){
System.out.println("projector is running");
}
}
class Screen{
private static final Screen INSTANCE = new Screen();
public static Screen getInstance(){
return INSTANCE;
}
public void up(){
System.out.println("screen up");
}
public void down(){
System.out.println("screen down");
}
}
class Stereo{
private static final Stereo INSTANCE = new Stereo();
public static Stereo getInstance(){
return INSTANCE;
}
public void on(){
System.out.println("stereo on");
}
public void off(){
System.out.println("stereo off");
}
}
class Light{
private static final Light INSTANCE = new Light();
public static Light getInstance(){
return INSTANCE;
}
public void on(){
System.out.println("light on");
}
public void off(){
System.out.println("light off");
}
public void dim(){
System.out.println("light dim");
}
public void light(){
System.out.println("light lighter");
}
}