软件构造——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
标签:String,对象,StringBuilder,构造,Snapshot,引用,可变,软件,final 来源: https://www.cnblogs.com/dcyyy/p/16353852.html