type
status
date
slug
summary
tags
category
icon
password

一、定义

notion image
外观模式:隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口,这种设计属于结构式设计,向外部提供了一个接口,来隐藏系统的复杂性。

二、示例:

模拟场景:
1、模拟对服务接口添加白名单的场景。公司需要设计服务接口的白名单。如果在每个接口中都添加白名单人员信息,这样的逻辑就会非常麻烦且不易维护。另外,这是一类具备通用逻辑的共性需求,非常适合开发成组件,以此来治理服务,让研发人员更多地关注业务功能开发。这时,我们可以考虑用AOP的思想去实现。
notion image

基础部分

传统编码方式

每个接口的内部都做白名单逻辑代码的编写,这样导致代码冗余,重复不可维护

外观模式设计

自定义注解@DoDoor,key为用户的白名单信息,returnJson为非白名单用户被拦截信息
自动配置到application.yml文件下面,后期修改只需要修改配置文件
读取配置文件的内容,并把值输入到StarterService
AOP切面处理@DoDoor逻辑信息

UML关系图

notion image
总结: 以上我们通过中间件的⽅式实现外观模式,这样的设计可以很好的增强代码的隔离性,以及复⽤性,不仅使⽤上⾮常灵活也降低了每⼀个系统都开发这样的服务带来的⻛险。可能⽬前你看这只是⾮常简单的⽩名单控制,是否需要这样的处理。但往往⼀个⼩⼩的开始会影响着后续⽆限的扩展,实际的业务开发往往也要复杂的很多,不可能如此简单。因⽽使⽤设计模式来让代码结构更加⼲净整洁。
 
JAVA【设计模式】装饰器模式JAVA【设计模式】享元模式
IT小舟
IT小舟
微信公众号:IT小舟
公告
type
status
date
slug
summary
tags
category
icon
password
notion image
你好,我是小舟。 欢迎来到我的博客,我喜欢运动、阅读、音乐和写作。如果有什么想要交流的,可以加我微信:upcodezhou。再次感谢你的光临!
notion image