背景
如果一个系统中组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种过多的耦合会面临着很多变化的挑战。 如何简化外部客户程序和系统间的交互接口?如何将外部客户程序的演化和内部子系统的变化之间的依赖相互解耦?
定义
为子系统中的一组接口提供一个一致(稳定)的界面,Facade(法语)模式定义了一个高层接口,这个接口使得这一子系统更加容易使用(复用)。 《设计模式》GoF
case
Facade更多的是表示一种软件设计的思想,没有相对固定的代码结构。可能代码结构相差很大的的代码都能体现Facade思想。其实,其他的设计模式也讲究接口分离,但这几个设计模式更强调这一点。接口分离其实很好的体现了“高内聚,低耦合”的设计思想。单个子系统尽量负责单个模块功能,这个子系统内部可能是高度耦合的,但对外只用一个统一的接口。