版权声明:本文为博主原创文章,如有错误劳烦指正。转载请声明出处,便于读取最新内容。——Bestcxx https://blog.csdn.net/bestcxx/article/details/85224644
前言
设计模式不是割裂的,根据场景来看,很多设计模式往往同时存在
外观模式
书面用语
外观模式的意图是为子系统提供一个接口,便于它的使用
大白话
外观模式简化描述就是,将一个系统中的一小部分功能挑选出来,以方便客户端有针对性的获取服务。
构造一个场景
场景描述
- 假设我们有一个用户系统,具有注册、登陆、修改密码、冻结用户账户、解冻其它用户账户、定时冻结超过3个月不登陆的用户账户等功能
- 该用户系统具有普通用户和管理员用户两类用户
- 现在我们分别有两个前端团队对普通用户的功能和管理员用户的功能进行开发
场景探究
- 用户系统提供的功能可以满足普通用户、管理员用户和系统自身的一些需求的
- 普通用户和管理员用户都需要开发修改密码的功能,但是普通用户显然没有解冻其它用户的权限
- 定时冻结超过3个月不登陆用户账户的功能,普通用户和管理员都不需要,这是系统行为
- 负责普通用户和管理员功能的前端团队显然系统只和他们相关的功能
外观模式给出的解决方案
将子系统的功能有选择的跳转并提供
- 将用户系统中普通用户用到的功能集中到 UserFacede 接口中
- 将用户系统中管理员系统用到的功能集中到 ManagerFacade 接口中
- UML 图
外观模式 适用场景
- 单系统甚至是多个系统功能负责,无需全部对外提供服务
- 外部所需功能仅是全部系统功能的一部分
- 可以将系统中的一部分功能封装为接口
- 简化外部系统调用对接方式和去除冗余选项
- 系统演化尚处于演化阶段,需要和外部调用系统解耦