外观模式¶
概念¶
Facade模式也叫外观模式,Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。这个一致的简单的界面被称作Facade。
角色和职责¶
- Facade
- 为调用方,定义简单的调用接口
- Clients
- 调用者。通过Facade接口调用提供某功能的内部类群。
- Packages
- 功能提供者。指提供功能的类群(模块或子系统)
适用于¶
为子系统中统一一套接口,让子系统更加容易使用。
客户使用多个系统
多个系统统一接口
某个系统改变时, 不至于客户端也得修改
统一的外观 各个子系统包一个外壳
使用外观模式把各个子系统包一层
有一个客户 使用n个系统,如果直接使用系统,其中一个系统发生变化,对客户端影响很大。客户端和子系统耦合太大。可以统一的使用一个外观,多个子系统统一使用这个外观,相当于各个子系统包了一层外壳。
使用一个Facade类,里面包括多个子系统,客户只需要调用Facade对象,不需要调用多个子系统了,Facade里面调用的有多个子系统。
例¶
投资者¶
投资者可以买各种股票(上海股市,深圳股市,几千支股票),债券,期货等。
可以用基金包装一下,由基金去管理投资,投资者去购买基金即可,基金即外观者。
基金有 激进型 投资股票 期货 这两个
稳健型 投资债券
基金提供给投资者了一个外观。
肯德基¶
有鸡翅 可乐 雪碧 薯条 鸡腿汉堡 牛肉汉堡 等等
套餐A:鸡翅 可乐 牛肉汉堡
套餐B:薯条 牛肉汉堡
套餐就是外观
接口¶
有5个基础接口:接口1 接口2 接口3 接口4 接口5。
功能A需要 先请求接口1 再请求接口3 最后请求接口4,这样就可以用一个中间接口A里面包含接口1 3 4。
功能B需要 先请求接口2 然后请求接口3 最后请求接口5,这样就可以用一个中间接口B里面包含接口2,3,5。
中间接口A和中间接口B就是外观模式。