UI编辑器开发总结
1.原子操作不能分离
比如一个控件的创建和选中,他们不管在什么情况下,有创建控件必然会选中该控件,所以这两个操作一定是在一起的,不能分开
2.对于多个指针副本的处理
程序中new出来的对象,他的指针可能存在多个副本pa,pb,pc,这样就会出现一个问题:delete pa;后,pb,pc都将变得无效,此时再使用时,会导致程序崩溃。
解决方法如下:
将指针和GUID绑定起来,通过指针可以查到GUID,通过GUID也可以查到指针。删除指针,同时会删除对应的GUID。
凡是需要保存指针或者传递指针的地方,都用GUID来代替,使用时通过GUID来查询对应的指针。如果没有查询到,就返回NULL,这样就很容易判断出指针是否有效。
该方法与原先相比多了一层双向映射表,而且会经常进行查询操作。可以使用GUID有序的顺序容器来存储映射表,查询时使用二分查找。(该方法是否是最快的有待验证)
3.关于DataModel的一些开发感想
DataModel层,是用来管理数据的,只需提供对数据节点最基本的操作-创建、删除、修改、查询、选择(如果比较复杂,可以拆出去)。
除了查询操作外,其余的都应该封装成CommandXXX(),在其中做一些基本判断,新建DataCommand,并入栈。
至于更高层次的操作、一些逻辑操作,将其放在DataCommand的undo()、redo()中

浙公网安备 33010602011771号