type
status
date
slug
summary
tags
category
icon
password
AI summary
一、定义

外观模式:隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口,这种设计属于结构式设计,向外部提供了一个接口,来隐藏系统的复杂性。
二、示例:
模拟场景:
1、模拟对服务接口添加白名单的场景。公司需要设计服务接口的白名单。如果在每个接口中都添加白名单人员信息,这样的逻辑就会非常麻烦且不易维护。另外,这是一类具备通用逻辑的共性需求,非常适合开发成组件,以此来治理服务,让研发人员更多地关注业务功能开发。这时,我们可以考虑用AOP的思想去实现。

基础部分
传统编码方式
在每个接口的内部都做白名单逻辑代码的编写,这样导致代码冗余,重复不可维护
外观模式设计
自定义注解
@DoDoor
,key为用户的白名单信息,returnJson为非白名单用户被拦截信息自动配置到application.yml文件下面,后期修改只需要修改配置文件
读取配置文件的内容,并把值输入到
StarterService
AOP切面处理
@DoDoor
逻辑信息UML关系图

总结:
以上我们通过中间件的⽅式实现外观模式,这样的设计可以很好的增强代码的隔离性,以及复⽤性,不仅使⽤上⾮常灵活也降低了每⼀个系统都开发这样的服务带来的⻛险。可能⽬前你看这只是⾮常简单的⽩名单控制,是否需要这样的处理。但往往⼀个⼩⼩的开始会影响着后续⽆限的扩展,实际的业务开发往往也要复杂的很多,不可能如此简单。因⽽使⽤设计模式来让代码结构更加⼲净整洁。
- 作者:IT小舟
- 链接:https://www.codezhou.top/article/JAVA%E3%80%90%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E3%80%91%E5%A4%96%E8%A7%82%E6%A8%A1%E5%BC%8F
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。