介绍
Snapshot Diagram可以描述程序运行时的内部状态,让我们对程序的运行有所了解。
使用Snapshot Diagram可以解释一些基本概念,刻画各类变量随时间变化,便于解释设计思路,方便程序员之间的沟通。
同时Snapshot Diagram能够更加直观地向我们展示值得改变以及引用的改变之间的关联和具体实现。
具体画法
用变量名-箭头->变量值/椭圆的形式表示各类变量当前的值。用x标记删去的旧值与旧引用。
对于基本类型的值,使用单箭头指向实际值,不需要表明数据类型:
对于对象类型的值,箭头指向一个椭圆:
如果是可变(mutable)对象,使用单线椭圆,椭圆内写明对象的类型及对象内的值。
如果是不可变(immutable)对象,使用双线椭圆,椭圆内写明对象的类型及对象内的值。
如果是对象的可变引用(对象类型变量前不加final),使用单线箭头,如下图中age变量;如果是不可变引用(对象类型变量前加final)使用双线箭头,如下图中id变量。
常见快照图
List:
Set:
Map:
自定义数据类型:
例题
请画出以下代码的Snapshot Diagram:
答:
第一次输出时的Snapshot Diagram:
第二次输出时的Snapshot Diagram: