手把手教你写设计方案

前言

最近知识星球粉丝说,不知道怎么做设计方案。那今天田螺哥跟大家讲讲设计方案如何写 哈。我将基于一个送礼物的接口,设计幂等性,来写一个份概要设计。

  • 目的
  • 用例图
  • 时序图
  • 流程图
  • 状态图
  • 数据库设计
  • 接口文档
  • 总结
  • 公众号捡田螺的小男孩 (有田螺精心原创的面试PDF)
  • github地址,感谢每颗star:github

背景

假设你负责一个礼物系统的开发,领导给你分配一个技术需求,保证系统的送礼等接口,能保证幂等性。于是你开始写技术方案...

目的

本文档旨在概述如何设计幂等性,以确保礼物系统中的送礼等接口具有幂等性。

用例图

用例图(Use Case Diagram):是软件工程中的一种行为模型,用于描述系统的功能需求和用户与系统的交互。它展示了系统中的不同用户(或角色)和系统功能之间的关系,以及各种用例(功能需求)的交互关系。

用例图一般包含这三要素:

  • 参与者: 表示与系统交互的外部实体,可以是用户、另一个系统或外部设备等。它们以符号形式表示,通常是一个人的轮廓图标。
  • 用例: 表示系统提供的各种功能或服务需求。每个用例都描述了一个系统的功能,它以椭圆形图标表示,并与参与者之间通过连线连接。
  • 关系: 用例图通过连线(箭头)表示参与者和用例之间的关系,通常表示参与者和用例之间的交互行为。

回到幂等方案处理,我们这么设计用例图

时序图

时序图(Sequence Diagram)是软件工程中的一种行为模型,用于描述对象之间的交互和消息传递顺序。它展示了对象之间交互方式。我们一般方案设计的实现细节,都体现在时序图。

要素解释:

  • 对象(Object): 在时序图中表示系统中的各个对象或参与者,可以是类、实例、角色或系统组件等。它们用矩形框表示,并在顶部写有对象名称。
  • 生命线(Lifeline): 每个对象下方有一条垂直的虚线,称为生命线,表示对象存在的时间段。生命线上方的箭头表示对象的生命周期。
  • 消息(Message): 表示对象之间的通信或交互,以箭头的形式从一个对象向另一个对象传递,指示消息的传递方向。消息可以是同步消息、异步消息、返回消息等,箭头上方标注了消息的类型和内容。
  • 激活(Activation): 在生命线上方,表示对象正在执行操作时的时间段,通常用竖直的方块或者压扁的椭圆形表示。

比如送礼的幂等处理逻辑,就可以体现在以下的时序图:

流程图

流程图,通常被用来描述一个过程、系统或活动中的步骤和流程。它一般用于把一些分支体现出来,以方便更好体现设计方案。比如送礼接口的幂等方案,用流程表现如下:

状态图

状态图是一种图形化的建模工具,用于描述系统中一个特定对象的各种状态以及它们之间的转换和事件触发。比如回到我们幂等处理这个方案设计,这个幂等表的状态,就可以用一个状态图来表示。

  • INIT: 幂等表插入的时候,就是初始化状态
  • SUCCESS: 如果送礼的业务逻辑处理成功,就更新为成功状态
  • FAIL: 如果送礼的业务逻辑处理失败,幂等表就更新为失败状态

数据库设计

对于写方案设计,数据库这块是比较重要的,尤其我们是后端开发。一般来说,你的表是如何设计的,就是把ER图放出来。如果你的方案只是修改原有的一些数据库表,比如加字段、加索引等等,只需要突出就行。

比如我的送礼幂等方案,我的ER图就是这样的:

因为没有其他表跟它关联,所以这个ER图只有一个单表。

接口文档

请求方式: POST 接口名称: 送礼接口 请求参数:

参数名称 参数类型 是否必填 备注
requestId String 请求ID,唯一,用于幂等
bizType String 业务类型,用于幂等,送礼接口送GIFT
senderId String 发送人Id
recevierId String 接受人Id
giftId Long 礼物Id
remark String 送礼备注内容
相关推荐
IT_陈寒几秒前
Java字符串判等踩坑记:==和equals真的不能乱用
前端·人工智能·后端
ocean21037 分钟前
2025-2026年计算机网络面试高频知识点洞察
计算机网络·面试·职场和发展·https·tcp·面试真题·秋招春招
许彰午11 分钟前
24-MyBatisHelper与autoCount
java·低代码·架构
CRMEB系统商城11 分钟前
汽车养护连锁的数字化底座CRMEB 多门店系统实战方案
java·开发语言·小程序·开源·汽车
小马过河R15 分钟前
微信小程序自定义登录态维护:从入门到生产级落地
后端·微信小程序·小程序·架构·登录态
学编程就要猛18 分钟前
使用Spring AI配置聊天大模型实现人机交互(初阶)
java·spring ai·advisor·chatclient·chatmodel
代码不停28 分钟前
子序列问题
java·算法
计算机学姐35 分钟前
基于SpringBoot的高校爱心慈善管理系统
java·vue.js·spring boot·后端·spring·tomcat·mybatis
vx+_bysj68691 小时前
springboot 旅行小程序97353
spring boot·后端·小程序·旅行小程序
大梦想家a1 小时前
基于Servlet+JSP的小区物业管理系统设计与实现(Bootstrap+MySQL)
java·servlet·bootstrap