外观模式(Fecade)与桥接模式(Bridge)都属于结构模式,与之前提到的建造者模式、代理模式、装饰器模式同属一类。
>什么是外观模式?
要想知道为什么要设计外观模式,就要讲讲它基于的>基本设计原则<:迪米特法则(DP)。
外观模式是指,通过对内的包装,对外只暴露预定的外观类。
举个例子,对于启动电脑,用户只需要按一下开机键就可以了,而实际上电脑要经过主板过电、硬盘自检、内存过电等操作,而这些操作都被包装起来了,对用户而言,就只有一个按下开机键的动作。
在抽象层面,子系统类被包装成一个Fecade类,客户类只需要知道Fecade类,而不需要知道复杂的子系统运作方式。听起来有点像建筑模式(Builder),都是把复杂的内容包装起来,以供简单调用。
其UML图如下:
外观模式的优点有:
- 客户与系统解耦,客户对子系统的使用更简单;
- 便于系统的阅读和理解;
- 子系统单独的修改不会影响到外观类