以前看过GEF,这个东西不错,功能很强。作出来的东西也很专业。可使用GEF最大的问题就是建模和处理事件监听问题。
通常GEF模型中的监听功能主要是通过PropertyChangeListener来实现的。好多东西得自己写。有了EMF就好多了,EMF中所有由模型生成的类都继承自EObject,而EObject又实现了Notiffer类。这个"Notiffier"类就是实现监听机制的关键。本身因为是在模型声成的时候就实现了这个类,所以使用起来非常的方便,可以极大的简化改进我们的开发过程。在这个文章中我们来一步一步的学习一下EMF,分析一下用EMF生成的代码以帮助理解一下EMF框架。
我的开发平台是Eclipse 3.4.2,哪个版本不重要,只要里头安装好了EMF就行了。
首先我们来创建一个新的"Empty EMF project".
创建好项目后,再在项目中创建一个新的Ecore Model:book.ecore
创建好book.ecore文件后可以在项目文件目录中看见我们的“book.ecore”模型文件。然后在我们的.ecore文件上右击选择“Initialize ecore_diagram diagram file”这个选项。这一步的作用就是通过这个步骤建立起来的"book.ecore_diagram"来实现EMF的可视化编辑。
创建好这个ecore_diagram文件后我们来打开它应该就能看见可视化设计界面了。如果没出错误,你的结果应该和我的差不多。
在这里需要注意一下的是现在网上好多的EMF教程其实都是几年前写的,现在版本早就升级了,所以这个界面和教程里所描述的内容上有一定的差不别。主要是:Association和Aggregation这两个类关系连接上。在下面的章节中我会单独拿它出来作一下讲解。