门面模式,是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口,使得子系统更容易使用
适用场景
◇ 客户端只需要使用某个复杂系统的子集,或者需要以一种特殊的方式与系统交互时,使用门面模式
◇ 当需要跟踪原系统的使用情况时 ,使用门面模面模式。因为所有对系统的访问都经过门面类,所以可以很容易地监视系统的使用
◇ 希望封装和隐藏原系统时
◇ 接入新系统的成本小于所有人使用和维护原系统使用所需的成本时
实现方式
◇ 定义一个 HandleHttpRequest
入口(门面类)
◇ 通过RouteOnAttribute
判断调用方访问的是哪个子系统
◇ 客户端使用门面类对象与多个子系统打交道(管理平台)
优缺点
优点
- 减少系统的相互依赖。使用门面模式,所有的依赖都是对门面对象的依赖,与子系统无关
- 提高了灵活性。不管子系统内部如何变化,只要不影响门面对象,任你自由活动
缺点
- 不符合开闭原则,对修改关闭,对扩展开放
实现步骤
HandleHttpRequest
配置动态pathRouteOnAttribute
判断请求对应的子系统注意:这里获取取变量
${http.path.param.xxx}
的方法中,前面3个部分是固定的,最后一部分必须与第1步中HandleHttpRequest
的 path 部分大括号里面设置的变量相同,否则取不到值根据
RouteOnAttribute
判断的结果,将请求路由到对应子系统模块进行进一步处理,处理完成之后统一响应给调用方在管理平台上注册,进行统一管控
对应到编排平台RouteOnAttribute
配置(值需要设置一致):
- 后续再需要新增子系统到这个模块中时,首先在
RouteOnAttribute
中新增一条属性,对应新增的子系统;然后在RouteOnAttribute
后面新增一个模块,来进行进一步的处理。
流程模板
视频地址
https://ss.bscstorage.com/bizd/le.zw/runtime_video/Facade%20design%20pattern.mp4