外观模式:提供一个统一的接口,用来访问子系统中的一群接口。外观定义一个高层接口,让子系统更容易使用,但没有将子系统“封装”起来,如果客户需要复杂的子系统功能,依旧可以直接使用子系统的类。特征:提供简化接口的同时,依然将系统的完整功能暴露出来,以供需要的人使用。
下面举个具体的例子:
如果我们要做一个家庭剧场影院,我们为了客户方便使用,让客户可以有看电影,看cd,看dvd的功能,提供六个按键(接口),开始看电影、结束看电影、开始播cd、结束播cd、开始播dvd、结束播dvd。当然,如果客户需要自己调节音量,那他就可以使用音量调节器,也就是说,我们给客户提供方便接口的同时,客户也可以动手,直接与子系统接触。
对于适配器,装饰者,外观模式,它们的结构很相似,但是它们解决的问题不同:
适配器将一个对象包装起来以改变其接口,解决接口不相容问题;
装饰者将一个对象包装起来以增加新的行为和新责任,解决动态添加功能问题;
外观将一群对象包装起来,以简化其接口,解决子系统过于复杂问题。