外观模式基本介绍
外观模式也叫做过程模式:外观模式为子系统 的一组接口提供一个一致的界面 ,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用
外观模式通过定义一个一致的接口,用于屏蔽内部子系统的细节,使得调用端和这个接口发生调用,而无需关心这个子系统的内部细节
结构型模式
原外观模式原理类图
类图

分析
外观类(Facade):为调用端提供一个统一的调用接口, 外观类知道哪些子系统负责处理请求,从而将调用端的请求代理给与适当子系统对象
调用者(Client):外观接口的调用者
子系统的集合:指模块或者子系统,处理Facade对象指派的任务,是功能的实际提供者
通过外观模式解决影院管理
代码
public class DVDPlayer{
    //使用单例模式中的饿汉式
    private static DVDPlayer instance= new DVDPlayer();
    private 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 play(){
        System.out.println("DVD is playing");
    }
    public void stop(){
        System.out.println("DVD is stop");
    }
}
?
//爆米花机
public clas Popcorn{
     //使用单例模式中的饿汉式
    private static Popcorn instance= new Popcorn();
    private 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 pop(){
        System.out.println("Popcorn is poping");
    }
}
//投影仪
public class Projector{
      //使用单例模式中的饿汉式
    private static Projector instance= new Projector();
    private 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 focus(){
        System.out.println("Projector is focus");
    }   
}
?
//屏幕
public class Screen{
       //使用单例模式中的饿汉式
    private static Screen instance= new Screen();
    private Projector(){}
    
    public static Screen getInstance(){
        return instance;
    } 
    public void up(){
        System.out.println("Screen up");
    }
    
    public void down(){
        System.out.