在实际的程序中,创建对象,删除对象这样的控制对象生命周期的处理可以说比比皆是。
创建对象
下面以图形编辑软件中用户双击鼠标创建新对象为例说明。

处理流程:
-
用户双击鼠标。
-
Framework生成QMouseEvent并发送给DrawerView
-
DrawerView从MouseEvent中取得鼠标位置
-
调用当前形状的clone方法
-
在clone方法中创建新的图形。
-
将鼠标位置设定为新图形的位置
-
将新图形登录到DrawerData中
画法
打开clone方法中创建新图形的消息的属性对话框,选择【Leftcycle】为【New】,虽然不是必须,但是为了明确表达设计者的目的,可以同时设定【Sterotype】选项为【create】。

删除对象
接下来以图形编辑软件中用户按下Delete键删除当前对象为例说明。

处理流程
-
用户按下Delte键
-
Framework将生成QKeyEvent并发送给DrawView
-
DrawView从DrawerData移除m_currentShape
-
删除m_currentShape对象
-
将m_currentShape置为空指针
画法
打开删除图形消息的属性对话框,选择【Leftcycle】为【Delete】,虽然不是必须,但是为了明确表达设计者的目的,可以同时设定【Sterotype】选项为【destroy】。

QtDrawer现状
由于类图和时序图是联动的,我们在完成上述时序图的同时,类图变成了下面的样子。

如果阅读本文能给您带来些许收获,欢迎分享给更多的朋友!
阅读更多新文章,请扫描下面二维码,关注公众号【面向对象思考】
