Snapshot diagram:以code-level,run-time,moment的视角看软件构造
1. Snapshot diagrams:
用于描述程序运行时内部状态的快照图。
其作用:
(1)便于程序员之间的交流
(2)便于刻画各类变量随时间变化的过程
(3)便于解释设计思路
2. Snapshot diagrams的具体画法:
(1)基本类型的值:通过常数来表示,其箭头为变量或object域对其的引用。
(2)对象类型的值:用一个以其类型作为标志的圆圈进行表示,其内部箭头指向他们的
值:(其内部的数据类型也可以加上其类型,来显示更多的信息。
(3)不可变类型的对象,用双线椭圆进行表示:
例如过程:
的snapshot图:
而可变类型StringBuilder的过程:
的snapshot图:
(4)不可变的引用:即带final关键字的引用:
如:final int n=5;
在snapshot中,其用双线箭头表示:
例如:
注:引用是不可变的,但指向的值却可以是可变的
可变的引用,也可指向不可变的值,要区分值和引用。
举例:以下代码的snapshot 图:
第一次输出时的snapshot图:
第二次输出时的snapshot图:
不可到达的对象,将有JVM的垃圾回收机制回收。