• 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分钟;

    @startuml
    
    interface 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_CODE
        NOTIFICATION
    }
    
    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 note
    
    note 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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74

    请添加图片描述

  • 相关阅读:
    操作系统(2)进程管理(上)进程与线程
    Unity中Shader的XRay透视效果
    嵌入式C语言自我修养《GNU C编译器扩展语法》学习笔记
    RocketMQ读写分离实战
    最高效面试八股文,平躺80%的企业
    计算机毕业设计ssm高校OA办公管理平台jnpxm系统+程序+源码+lw+远程部署
    Java入坑之语法糖
    Vue3项目引入 vue-quill 编辑器组件并封装使用
    都 2022 年了,你真的会用 Python 的 pip 吗?
    【视觉SLAM入门】7.2. 从卡尔曼滤波到扩展卡尔曼滤波,引入、代码、原理、实战,C++实现以及全部源码
  • 原文地址:https://blog.csdn.net/l2x1314258/article/details/136716454