软件构造——Snapshot图
Snapshot图(代码快照图)
这里首先回顾一下软件构造最初提出过一个“三维度八视图”的概念,(此概念是软件构造和后期维护过程中的一个概念,讨论的是如何构造的问题)三维度分别是时刻和阶段维度,代码和构件维度,编译和运行维度,而八视图指的就是2 x 2 x 2 = 8了,这里的Snapshot图描绘的是八维度中的时刻、代码、运行维度
- 数据类型:
- 不可变的基本数据类型:
- 举例:int, long, char, string , …
- 不可变的对象类型:
- 举例:Integer, Long , Character , String , …
- 可变的对象类型:
- 举例:Date , StringBuilder , List , …
- 对象:
-
不可变的对象:
- 要求:该对象的数据类型为不可变类型
- 举例:String str = new String(“abc”);中的对象String “abc”就是不可变对象
- 画法:双线椭圆内写对象,如上述String “abc”
-
可变的对象:
- 要求:该对象的数据类型为可变类型
- 举例:StringBuilder strbuilder = new StringBuilder(“a”);中的对象StringBuilder “a”就是可变对象
- 画法:单线椭圆写对象,如上述StringBuilder “a”
- 引用:
- 不可变的引用:
- 要求:该引用被final修饰过则为不可变引用
- 举例:final String str = new String(“abc”);中的str就是不可变引用;final int n = 1;中的n就是不可变引用; final StringBuilder strbuilder = new StringBuilder(“a”);中的strbuilder也是不可变引用,只看有没有用final修饰即可
- 画法:双线箭头指出(此处的id为不可变引用)
- 可变的引用:
- 要求:该引用没有被final修饰则为可变引用
- 举例:String str = new String(“abc”);中的str就是可变引用; int n = 1;中的n就是可变引用;StringBuilder strbuilder = new StringBuilder(“a”);中的strbuilder也是可变引用
- 画法:单箭头指出(此处s为可变引用)
- 容器
可以理解为是由一堆引用构成的,不同的ADT有不同的画法,这里直接给出常见ADT的Snapshot图框架,需要注意的是如果其中的对象被final修饰同样需要遵循之前的画法使用双线
- List
- Set
- Map
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!