模式简介:
 意图--一个一致的高层接口
 Facade模式的意图:为了子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
Facade模式:关键特征
           意图       希望简化现有系统的使用方法。你需要定义自己的接口。
           问题       只需要使用一个复杂系统的一个子集。或者,需要用一种特殊的方式与系统交互。
           解决方案   Facade向客户展现使用现有系统的一个新的接口。
           参与者与   向客户展现一个定制的接口,让客户更容易地使用现有系统。
           协作者 
           效果       Facade模式简化了对所需子系统的使用。但是,由于Facade并不完整,因此某些功能对于客户可能是不可用的
           实现       定义一个(或一组)新的类来提供所需的接口
                 *让新的类使用现有的系统

1)Facade模式的变体:减少客户必须处理的对象数量
           2)Facade模式的变体:用新的程序对现有功能进行补充
           3)Facade模式的变体:一个“封装”层
              几个需要包装原有系统的理由:
               *跟踪对系统的使用----强迫所有客户通过Facade使用原有系统,然后就可以很容易地监控对系统的使用。
               *改变系统----我可能需要在未来改变我们的系统。如果把原有系统设计成Facade类的私有成员,那么只需作最少的工作就能切断
               一个新的系统。当然,我仍然需要做一些重要的工作,但至少我只要改变一个地方(Facade类)的代码。