外观模式是通过一个简单的接口将各种复杂子系统的功能封装起来,让它们使用起来更加容易,也可以减少调用者与个子系统之间的耦合。
比如说启动计算机,需要CPU、内存、硬盘等模块的配合工作,最终才能完全启动,但是对于使用者来说,它需要的功能仅仅是启动计算机,至于中间各个模块如何工作它并不关心。
启动计算机时,需要从硬盘读取启动指令,然后将指令加载到内存中,最后由CPU来执行指令,如果这些都需要使用者自己调用,一是增加学习成本,二是会让这些模块的代码与调用者严重耦合,为了解决这些问题,我们可以设计Computer类,通过一个接口将这些模块整合起来,这样使用者就只需要拥有Computer实例,再调用start方法即可。
外观模式用于创建一个类似Helper的接口,将原本复杂的各功能模块调用简化,让外部使用起来更加方便,也可以将内部功能模块与外界隔离,但是同时它会让外观类自身变得复杂。