Flex开发流程设计器的经验之谈
来源:互联网 发布:广告led屏数据无法读取 编辑:程序博客网 时间:2024/06/05 01:04
在(3)中,简要介绍了整个Flex版设计器的整体架构,那么今天就进入比较细粒度的Flex GEF的内核看看。
既然名称中有“GEF”,那么肯定会与Eclipse GEF的设计会有所类似,事实上,本身就是借鉴GEF的设计思想和对象概念模型,只是做了改造和简化。
如下图所示。
其最基本的核心在于“IModel、IEditPart、IFigure”,这构成了MVC的核心对象模型。
IModel的变更会通知IEditPart这个控制器,由控制器刷新IFigure。—— 不过此处并没有采用EMF那种对象结构:EMF在底层对Model的所有属性变更都做了监听,任何变更都会引发Notifor操作,从而利用监听器来处理notification。在我最初的设计中,原本也想这么操作的,不过后来摒弃这个思路。如果在底层再引入一个类似EMF的框架,会再引入大量的基类,无形中增大了最终flash文件的大小。所以,此处虽然也支持Notifor操作,但是都是“外围显示主动通知Notifor”的方式,而且抛弃了Notification这一层。—— 这样的结果就是,我在command中,并不是非常彻底的只操作Model,或多或少都会会显示引发对EditPart的处理操作。(这是一个很“拖泥带水”的实现方式,但是处理方式要简化很多,而且节省了很多底层代码,缩减了flash文件)。
当然,每一个Editor都会维持一个属于其自己的EditDomain,用于记录在当前操作空间的一些对象,比如“commands”、“那些对象被选中”、“Figure或Model与EditPart的快速索引”等等。
另外,每个Editor都会由一个Viewer来,定义当前显示方式。同时,利用EditPartFactory、ModelFactory、FigureFactory来创建相应对象。上层业务层真正需要实现不同的Factory(已经包括相应的model、editpart、figure),这样就可以很容易快速实现不同“视图展现模式”。—— 外围大量的扩展代码都是在这个地方。
当然,这里面有一个“Figure”概念。早在(1)中,就已经简单提过,Figure并不是Flex中的概念,只是用用于“声明这是一个GEF中的图形”而已。(注:这个Figure的处理很有技巧性,处于商业产品的限制,我无法更多的在这里做详细解释,大家只能自己揣摩了)
当然,真正的Flex GEF内核实现要比上面图形中的展现复杂不少。但基本逻辑关系的核心已经表示差不多了。
这部分内容也只能“点到即止”,毕竟本身属于商业产品范畴。
- Flex开发流程设计器的经验之谈
- Flex开发web流程设计器的经验之谈(1)
- Flex开发流程设计器的经验之谈(2)
- Flex开发流程设计器的经验之谈(3)
- Flex开发流程设计器的经验之谈(4)
- Flex流程设计器实例
- FLEX WEB流程设计器线条、箭头的绘制
- 做大型flex项目的一点经验之谈
- FLex 流程设计器 高手出招
- GTK初次开发的经验之谈
- 互联网开发模式的经验之谈
- 互联网开发模式的经验之谈
- 互联网开发模式的经验之谈
- 互联网开发模式的经验之谈
- 互联网开发模式的经验之谈
- 开发经验之谈
- 写了一个Flex的web流程设计器原型系统
- 写了一个Flex的web流程设计器原型系统 .
- java.lang.File类解析
- cache coherency when using dma
- 九九乘法表
- 关于Graphics的一个应用实例
- 谈谈云计算的部署方式——关于分布化实现
- Flex开发流程设计器的经验之谈
- 发布数据库表结构导出成WORD文档工具 DBExportDoc V1.0 For MySQL
- 什么是SEO?!我也能做SEO高手!
- (转)经典正则表达式
- 浪潮之巅 第五章 奔腾的芯 Intel(2)英特尔摩托罗拉之战
- asp.net加载指定文件夹下所有图片
- Lighttpd 'mod_userdir' Case Sensitive Comparison Security Bypass Vulnerability
- 类似百度谷歌的分页
- Lighttpd URI Rewrite/Redirect Information Disclosure Vulnerability