外观模式:定义了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。
构造家庭影院外观
public class HomeTheaterFacade{
Amplifier amp;
Tuner tuner;
DvdPlayer dvd;
CdPlayer cd;
Projector projector;
TheaterLights lights;
Screen screen;
PopCornPopper popper;
public HomeTheaterFacade(Amplifier amp,Tuner tuner,DvdPlayer dvd,CdPlayer cd,Projector projector,TheaterLights lights, Screen screen,PopCornPopper popper){
this.amp = amp;
this.tuner = tuner;
this.dvd = dvd;
this.cd = cd;
this.projector = projector;
this.lights = lights;
this.screen = screen;
this.popper = popper;
}
public void watchMovie(String movie){
System.out.println("准备好看电影了.......");
popper.on();
popper.pop();
lights.dim(10);
screen.down();
projector.on();
projector.wideScreenMode();
amp.on();
amp.setDvd(dvd);
amp.setSuroundSound();
amp.SetVolume(5);
dvd.on();
dvd.play(movie);
}
public void endMovie(){
同watchMovie();
}
观赏电影
public class HomeTheaterTestDrive{
public static void main(String[] str){
HomeTheaterFacade htf = new HomeTheaterFacade(amp,tuner,dvd,cd,projector,screen,lights,popper);
homTheater.watchMovie("Raiders of the Lost Ark");
homeTheater.endMovie();
}
}
}
"最少知识"原则:只和你的密友谈话