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()中

posted @ 2013-08-01 10:04  海盗剑客  阅读(194)  评论(0)    收藏  举报