PlantUML Integration 编写短信服务类图

PlantUML Integration 写一个类图,主要功能为
1、编写一个serviceSms短信服务类;
2、需要用到短信的地方统一调用基建层的服务即可;
3、可以随意切换、增加短信厂商,不需要更改场景代码,只需要更改application.yml 里面的配置参数smsEffective的值即可完成切换;
4、方法签名1、类型 2、手机号 3、模板ID 4、泛型;
5、pplication.yml 里面的配置参数smsTest的值为true的时候,真实发送短信验证码,值为false的时候,不给用户发送验证码,仅写入将手机号+使用场景type为key、123456为值,写入缓存中;
6、方法签名的中的“类型”使用枚举,包含验证码、通知,如果值为“验证码”,需要将手机号+使用场景type为key、随机验证码为value,写入缓存中,过期时间为5分钟;

@startumlinterface SmsService {+ sendSms(type: SmsType, phoneNumber: String, templateId: String, content: T): boolean
}interface SmsProvider {+ sendSms(type: SmsType, phoneNumber: String, templateId: String, content: T): boolean
}class SmsProviderA {+ sendSms(type: SmsType, phoneNumber: String, templateId: String, content: T): boolean
}class SmsProviderB {+ sendSms(type: SmsType, phoneNumber: String, templateId: String, content: T): boolean
}class InfrastructureLayer {- SmsProvider smsProvider
}enum SmsType {VERIFICATION_CODENOTIFICATION
}class Cache {+ put(key: String, value: String, expiry: int): void+ get(key: String): String
}class ApplicationConfiguration {- boolean smsTest
}SmsService --* SmsProvider
SmsProvider <|.. SmsProviderA
SmsProvider <|.. SmsProviderB
SmsProviderA --* InfrastructureLayer
SmsProviderB --* InfrastructureLayer
SmsService *-- SmsType
SmsService o-- Cache
SmsService o-- ApplicationConfiguration' 注释
note top of SmsService
短信服务类,提供短信发送功能,控制发送模式,管理验证码缓存
end notenote top of SmsProvider
短信厂商接口,定义了发送短信的方法
end note
note top of SmsProviderA
厂商A实现
end note
note top of SmsProviderB
厂商B实现
end note
note top of Cache
验证码缓存类,用于存储和检索验证码
end note
note top of ApplicationConfiguration
应用配置类,用于控制短信发送模式
end note
note top of SmsType
短信类型枚举
end note
note top of InfrastructureLayer
基础设施层
end note@enduml

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/755700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在 Flutter 中实现地理定位和地图功能?

可以使用高德定位 高德地图实现 1 、申请成为高德地图开发者 2 、创建应用配置获取 Key 3 、安装依赖配置 amap_flutter_location 4、为了方便调试需要配置签名&#xff0c;配置签名文件 找到 android /app/build.gradle 配置签名文件 5 、需要配置权限&#xff0c;修改…

13个外贸业务员常用邮件模板-订单沟通

除了报价后跟进客户&#xff0c;我们在实际工作过程当中也会遇到很多非常规性的情况&#xff0c;需要和客户及时沟通处理。 以下是13个外贸业务员常用邮件模板-订单沟通&#xff1a;你可以根据自己的行业、公司、产品情况以及自身的经验判断进行调整和完善&#xff0c;做出一套…

水下蓝牙耳机哪个牌子好?业界公认四大高口碑游泳耳机

在这个活力四溢的时代&#xff0c;人们对于健康生活方式的追求愈发热切&#xff0c;游泳作为一项兼顾休闲与健身的运动&#xff0c;深受大众喜爱。在水下世界&#xff0c;音乐的陪伴能增添游泳的乐趣&#xff0c;一款好的水下蓝牙耳机成为游泳爱好者们的新宠。 近年来&#xff…

深入理解nginx连接数限制模块[上]

目录 1. 引言2. 启用连接数限制功能3. 配置指令介绍3.1. limit_conn_zone&#xff1a;3.2. limit_conn&#xff1a;3.3. limit_conn_log_level&#xff1a;3.4. limit_conn_status&#xff1a;3.4. limit_conn_dry_run&#xff1a; 1. 引言 nginx是一个高性能的开源Web服务器和…

DZY-212中间继电器 DC 220V 板后接线 面板安装 JOSEF约瑟

系列型号: DZY-200系列中间继电器&#xff1b;DZY-201中间继电器&#xff1b; DZY-202中间继电器&#xff1b;DZY-203中间继电器&#xff1b; DZY-204中间继电器&#xff1b;DZY-205中间继电器&#xff1b; DZY-206中间继电器&#xff1b;DZY-207中间继电器&#xff1b; DZY-20…

openEuler 22.03(华为欧拉)一键安装 Oracle 19C(19.22) 数据库

前言 Oracle 一键安装脚本&#xff0c;演示 openEuler 22.03 一键安装 Oracle 19C 单机版过程&#xff08;全程无需人工干预&#xff09;&#xff1a;&#xff08;脚本包括 ORALCE PSU/OJVM 等补丁自动安装&#xff09; ⭐️ 脚本下载地址&#xff1a;Shell脚本安装Oracle数据…

LeetCode 0303.区域和检索 - 数组不可变:前缀和(两行描述核心思路版本)

【LetMeFly】303.区域和检索 - 数组不可变&#xff1a;前缀和&#xff08;两行描述核心思路版本&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/range-sum-query-immutable/ 给定一个整数数组 nums&#xff0c;处理以下类型的多个查询: 计算索引 left…

ssh免密登陆更换目标主机后无法连接

在进行hadoop分布式环境搭建时&#xff08;三台机&#xff0c;master&#xff0c;slave1&#xff0c;slave2&#xff09;&#xff0c;后期slave2系统出现问题&#xff0c;更换新机后&#xff0c;master与slave2文件传输失败&#xff1a; 以为是秘钥过期的问题&#xff0c;更换…

走出大模型部署新手村!小明这样用魔搭+函数计算

作者&#xff1a;拓山 前文介绍了魔搭 ModelScope 社区模型服务 SwingDeploy 服务。开发者可以将模型从魔搭社区的模型库一键部署至阿里云函数计算&#xff0c;当选择模型并部署时&#xff0c;系统会选择对应的机器配置。按需使用可以在根据工作负载动态的减少资源&#xff0c…

c++多长时间会被Python或者其他语言取代?

c多长时间会被Python或者其他语言取代&#xff1f; 如果不考虑市场因素&#xff0c;C#今天就可以取代C。 自.NET跨平台至今&#xff0c;C能做的工作&#xff0c;C#都能做了&#xff0c;且性能差别不大。 在C最有优势的嵌入式UI方面&#xff0c;C#可以拿出Avalonia替代QT。用 …

9.16单词拆分(LC139-M)

算法&#xff1a; 这道题可以用回溯&#xff0c;但是可能会超时 可以用背包问题解决&#xff1a; 物品&#xff1a;单词 背包&#xff1a;字符串&#xff1a; 单词能否组成字符串s&#xff0c;就是问物品能不能把背包装满。 拆分时可以重复使用字典中的单词&#xff0c;就…

M4芯片和核心板应用于工业网关解决方案

在工业级应用中&#xff0c;M4芯片和核心板凭借其丰富的接口和强大的性能及高性价比特点&#xff0c;已经成为众多工业设备中的首选。本文将从M4芯片和核心板的特点、应用场景、以及其在工业级网关中的应用等方面进行详细阐述。 一、M4芯片和核心板的特点 M4芯片和核心板以其…

nfs介绍与配置

NFS 1. nfs简介 nfs特点 NFS&#xff08;Network File System&#xff09;即网络文件系统&#xff0c;是FreeBSD支持的文件系统中的一种&#xff0c;它允许网络中的计算机之间通过TCP/IP网络共享资源在NFS的应用中&#xff0c;本地NFS的客户端应用可以透明地读写位于远端NFS服…

camelot pdf提取表格实践(记录)

参考&#xff1a; 巧用Python的camelot库批量提取PDF发票信息 关于文本pdf的表格抽取 AttributeError: module ‘camelot‘ has no attribute ‘read_pdf‘及类似问题解决办法 camelot 参数 https://blog.csdn.net/INTSIG/article/details/123000010 报错解决&#xff1a; Mod…

利用 Python 处理遥感影像数据:计算年度平均影像

在地球科学、气象学以及环境监测等领域&#xff0c;遥感影像数据是一种重要的信息源&#xff0c;它们可以提供地表的地形、植被覆盖、气候变化等丰富信息。然而&#xff0c;随着观测技术的进步&#xff0c;我们通常会获得大量的遥感影像数据&#xff0c;如何高效地处理和分析这…

美团大规模KV存储挑战与架构实践

KV 存储作为美团一项重要的在线存储服务&#xff0c;承载了在线服务每天万亿级的请求量&#xff0c;并且保持着 99.995% 的服务可用性。在 DataFunSummit 2023 数据基础架构峰会上&#xff0c;我们分享了《美团大规模 KV 存储挑战与架构实践》&#xff0c;本文为演讲内容的整理…

探讨NLP对行业大量数据信息抽取的技术实现

在本文中&#xff0c;为了实现高效的信息抽取&#xff0c;我们采用了一个自主研发的多模态AI的大模型NLP平台。 这个平台的使用过程分为以下几个步骤&#xff1a; 数据收集&#xff1a;我们收集了与项目相关的100条数据样本&#xff0c;这些样本涵盖了各种商品描述&#xff0c…

MongoDB使用笔记

目录 MongoDB介绍1.MongoDB是什么&#xff1f;2.MongoDB 的存储结构3.MongoDB 存储引擎3.1 WiredTiger 基于 LSM Tree 还是 B Tree&#xff1f; 4.MongoDB 聚合4.1 MongoDB 聚合有什么用&#xff1f;4.2 MongoDB 提供了哪几种执行聚合的方法&#xff1f; 5.MongoDB 事务6.Mongo…

Go web 基础相关知识

Go web Web工作方式 浏览器本身是一个客户端&#xff0c;当你输入URL的时候&#xff0c;首先浏览器会去请求DNS服务器&#xff0c;通过DNS获取相应的域名对应的IP&#xff0c;然后通过IP地址找到IP对应的服务器后&#xff0c;要求建立TCP连接&#xff0c;等浏览器发送完HTTP …

软考 网工 每日学习打卡 2024/3/18

学习内容 第8章 网络安全 本章主要讲解网络安全方面的基础知识和应用技术。针对考试应该掌握诸如数据加密、报文认 证、数字签名等基本理论&#xff0c;在此基础上深入理解网络安全协议的工作原理&#xff0c;并能够针对具体的 网络系统设计和实现简单的安全解决方案。 本章共有…