距离上一个 “性能优化系列” 已经快一个月没有发布文章了,最近公司真的是太忙了,甚是想念掘友们啊。最近把学习架构方面的知识记录下来,供自己和掘友们一起学习。
注意: 文章中 UML 图开始用是 Windows PowerDesigner 工具,后来换电脑了用的 StarUML。
UML
定义
UML 是统一建模语言, 是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。
作用
- 帮组开发团队以一种可视化的方式理解系统的功能需求。
- 有利于开发团队队员之间在各个开发环节间确立沟通的标准,便于系统文档的制定和项目的管理。因为 UML 的简单、直观和标准性,在一个团队中用 UML 来交流比用文字说明的文档要好的多。
- UML 为非专业编程人士理解软件的功能和构造,提供了一种直白、简单、通俗的方法。
- 使用 UML 可以方便的理解各种框架的设计方式。
面向对象模型
用例图 (User Case Diagram)
概述
. 用例图主要模拟系统中的动态行为,并且描述了用户、需求、以及系统功能单元之间的关系。
. 用例图由参与者 (用户) ,用例 (功能) 和它们之间的关系组成。
目的
- 用来收集系统的要求。
- 用于获取系统的外观图。
- 识别外部和内部影响因素。
- 显示要求之间的相互作用是参与者。
构成元素
用例图例子
需求: 以一个登录的例子来画一个用例图
- 包含 登录/注册/
- 登录/注册 支持手机号码、第三方 QQ/weichat/GitHub 登录注册
效果图:
提供的登录用例基本上已经包含了刚刚所学的组成元素部分。
结构图
类图 (Class Diagram)
概念
类图 (Class Diagram) 是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其它类的关系等。
类图不显示暂时性的信息,类图是面向对象建模的主要组成部分。它即用于应用程序的系统分类的一般概念建模,也用于详细建模,将模型转换成编程代码。
构成元素
类图例子
需求: 基于 google 官方 MVP 架构绘制一个基本的 MVP 类图架构
组合结构图 (Composite Structure Diagram)
概念
用来显示组合结构或部分系统的内部构造,包括类、接口、包、组件、端口和连接器等元素。比类图更抽象的表示,一般来说先画组合结构图,再画类图。
构成元素
注意事项
侧重类的整体特性,就用类图;侧重类的内部结构,就使用组合结构图。
组合结构图例子
对象图 (Object Diagram)
概念
显示某时刻对象和对象之间的关系
构成元素
对象图例子
包图 (Package Diagram)
概念
包与包的之间的关系
构成元素
包图例子
动态图
时序图 (Sequence Diagram)
概念
时序图(Sequence Diagram) , 又名序列图、循序图、顺序图,是一种UML交互图。
它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。
它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。
构成元素
时序图例子
需求:这里为了简单就用一个登陆的时序图为参考通讯图 (Communication Diagram)
概念
顺序图强调先后顺序,通信图则是强调相互之间的关系。顺序图和通信图基本同构,但是很少使用通信图,因为顺序图更简洁,更直观。
构成元素
通讯图例子
活动图 (Activity Diagram)
概念
活动图是 UML 用于对系统的动态行为建模的另一种常用工具,它描述活动的顺序,展现从一个活动到另一个活动的控制流。活动图在本质上是一种流程图。活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程。
构成元素
活动图例子
需求: 点开直播 -> 观看直播的动作
状态图 (Statechart Diagram)
概念
描述了某个对象的状态和感兴趣的事件以及对象响应该事件的行为。转换 (transition) 用标记有事件的箭头表示。状态(state)用圆角矩形表示。通常的做法会包含一个初始状态,当实例创建时,自动从初始状态转换到另外一个状态。
状态图显示了对象的生命周期:即对象经历的事件、对象的转换和对象在这些事件之间的状态。当然,状态图不必要描述所有的事件。
构成元素
状态图例子
需求: 这里直接借鉴 Activity 官方状态图
交错纵横图 (Interaction overview Diagram)
概念
用来表示多张图之间的关联
构成元素交错纵横图例子
交互图
组件图 (Component Diagram)
概念
组件图(component diagram)是用来反映代码的物理结构。从组件图中,您可以了解各软件组件(如源代码文件或动态链接库)之间的编译器和运行时依赖关系。使用组件图可以将系统划分为内聚组件并显示代码自身的结构
构成元素
组件图例子
部署图 (Deployment Diagram)
概念
部署图可以用于描述规范级别的架构,也可以描述实例级别的架构。这与类图和对象图有点类似,做系统集成很方便。
构成元素部署图例子
经典例子
微信支付时序图总结
只要掌握常用的几种图 (用例图、类图、时序图、活动图) ,就已经迈向架构第一步了,加油!