为系统中的一组接口提供一个一致的界面,facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
provide a unified interface to a set of interfaces in a subsystem. facade defines a higher-level interface that makes the subsystem easier to use.

外观模式的结构中包两种角色。
+ 子系统(subsystem):子系统是若干个类的集合,这些类的实例协同合作为用户提供所需要的功能,子系统中任何类都不包含外观类的实例引用。
+ 外观(facade):外观是一个类,该类包含子系统中全部或部分类的实例引用,当用户想要和子系统中的若干个类的实例打交道时,可以代替地和子系统的外观类的实例打交道。
使客户和子系统中的类无耦合,并且使子系统使用起来更加方便。
外观只是提供了一个更加简洁的界面,并不影响用户直接使用子系统中的类。
子系统中任何类对方法的内容进行修改,不影响外观类的代码。
对于一个复杂的子系统,需要为用户提供一个简单的交互操作。
不希望客户代码和子系统中的类有耦合,以便提高子系统的独立性和可移植性。
当整个系统需要构建一个层次结构的子系统,不希望这些子系统相互直接的交互。
<a href="https://github.com/androidwolf">mygithub</a>