组建一个家庭影院:
DVD播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能,其过程为:
直接用遥控器:统筹各设备开关
开爆米花机
放下屏幕
开投影仪
开音响
开DVD,
选dvd
去拿爆米花
调暗灯光
播放
观影结束后,关闭各种设备
使用外观模式解决家庭影院项目
package com.flower.waiguan;
public class TestMain {
public static void main(String[] args) {
HomeYouFacade homeYouFacade = HomeYouFacade.homeYouFacade;
homeYouFacade.start();
homeYouFacade.stop();
}
}
abstract class OnAndOff{
protected String deviceName;
public OnAndOff(String deviceName) {
this.deviceName = deviceName;
}
public void on(){
System.out.println(deviceName + " on");
}
public void off(){
System.out.println(deviceName + " off");
}
}
class DVDPlayer extends OnAndOff{
public static final DVDPlayer dvdPlayer = new DVDPlayer();
public DVDPlayer() {
super("dvd");
}
}
class Popcorn extends OnAndOff{
public static final Popcorn popcorn = new Popcorn();
public Popcorn() {
super("popcorn");
}
}
class Projector extends OnAndOff{
public static final Projector projector = new Projector();
public Projector() {
super("projector");
}
}
class Screen extends OnAndOff{
public static final Screen screen = new Screen();
public Screen() {
super("screen");
}
}
class HomeYouFacade{
public static final HomeYouFacade homeYouFacade = new HomeYouFacade();
// 组合设备
private static final DVDPlayer dvdPlayer = DVDPlayer.dvdPlayer;
private static final Popcorn popcorn = Popcorn.popcorn;
private static final Projector projector = Projector.projector;
private static final Screen screen = Screen.screen;
public void start(){
dvdPlayer.on();
popcorn.on();
projector.on();
screen.on();
}
public void stop(){
dvdPlayer.off();
popcorn.off();
projector.off();
screen.off();
}
}
我这里没有写的太复杂,只是写了简单的off 和 on方法, 能理解思想就可以
对外观模式的角色类图