>通过什么实现
● Token(理解为某个对象本身的属性,他会根据自身的变化而自动更新自己的Token)
● 编码
● 集合
>过程
需要实现什么:通过用户的输入获得一个矩形区域,在该矩形局域内以左上角为原点通过排布算法进行编排,得到一个初始的阵列。用户对该阵列进行操作和修正,得到二次设计阵列,我们需要获取二次设计阵列的排布数据以及自身和周围的状态。
思考和执行:初始阵列其实就是一个二维数组,用户对阵列进行操作,就是对二维数组进行操作,然后可以得到一个不等长的变化的二维数组。我这么认为,然后开始构思如何实现。想了想,发现比较简单。但是想到了一个问题,虽然用数组可以实现,但是后面进行信息解读和进行其它计算的时候仍然需要使用数组,这可能会产生一个多重嵌套的数组操作过程,显然这样是不安全的。(在进行数组操作的时候很容易产生数组越界,即使使用一些代码来进行限制,也还是可能产生数组越界,数组一旦越界,就会让程序死掉。)而且阵列在用户操作完成后,阵列对象的状态无从记录,如果使用数组进行记录,每次用户进行操作和修正的时候,需要操作好几个数组,这将使得发生数组越界的风险继续增大。但是一下又没有想到其它方法。后面转换思路,发现是被阵列这个东西迷惑了,抛弃掉这个理解,其实阵列中的每一个东西都是对象,他只不过是按照一定的方式排序了而已,他与杂乱无章的对象并没有什么不同。这样理解后,那就比较简单了,按照现实中物理学的理解,每个对象他所存在的状态,与它本身共存,对象创建则状态创建,对象改变则状态改变,对象销毁则状态消失。那么,我们在一个一个的创建阵列对象的时候,同时创建状态,状态与对象是共存的,状态记录对象处于什么位置,存在一个怎样的环境中,对象的任何变动都将会改变状态。这样就解决了数组越界的问题。但是产生了一个新问题,如何记录状态?我想起来一句话,诸多的编程语言都对字符串有着非常安全和强大的能力,文件本身就是一个字符集和。所以我决定用字符串编码来记录状态。与之对应有一个解析器,用来解析状态编码。用户操作和修正对象,对象的状态通过用户操作触发状态变更。另外,使用Token标记对象后,Token是字符串,比起对象数组具有更小的资源占用。经过上面的处理后,我们需要对该阵列进行数据采集,如何采集呢,我们只需要采集每个对象的Token就可以了,采集完毕后,我们会得到一个Token集合,想要得到什么数据,我们通过前面的Token解析器进行解析就可以知道了。由此实现一个数据堆成山到用什么拿什么的过程。