设计模式之ArcGIS的API设计
来源:互联网 发布:it人才外包服务 编辑:程序博客网 时间:2024/05/11 04:44
去年一年在外出差做项目实施有10个月。所做的工作都是ArcGIS的扩展研究及开发。
今年终于有时间停下来,学习一下新的东西,认真总结一下自己的知识了。因为C++中没有反射机制,而且是ArcGIS是基于COM技术的,所以ArcGIS的扩展都是基于COM技术的。如何扩展其实就是做两件事,一,确定是否有扩展点,而,如果有扩展点,实现需要实现的接口,完成接口中的方法。
扩展需要什么基础?其实做了很多之后就两点,一是不做假设,而是了解C++的常用设计模式。
在组件式开发的基础上写扩展最重要的一个原则就是不做假设,你不能假设接口中的方法是在什么环境下返回特定的东西。而因该考虑通用的设计下,我只返回Client调用过程中需要的东西,此处对返回不能特化。这个地方的确很难理解。因为扩展的组件可以在任何环境下采用,如果特化,调用顺序或方式改变,就有可能发生问题。譬如,我为电信机站渲染写的ISymbol扩展组件,9.3下的ISymbol内的方法的调用顺序和9.2下ISymbol内的调用顺序是有差别的,假如我对接口内的方法调用顺序有假设(可能会利于GDI初始化),结果就会出现问题。
关于模式,我在ArcGIS的开发中不断的学习和总结。事实上ArcGIS的架构是相当精良的。有些人说是设计过度,那是因为他自己没有深入到扩展应用的层次,只是做些代码的堆积,如果仅是这样开发,这些人是不需要懂得设计和模式的;事实上大部分的GIS功能在ArcGIS的组件中已经提供,用户需要学习的仅仅是如何按照顺序去调用,至于组件是如何写出来的,大部分人是不会去关心和了解的。
对于ArcGIS模式的了解也是一个长期的过程,事实上通过ArcGIS自己提供的对象模型图(OMD)我们是可以了解一些产品架构的,但是仅限于此还是很难了解底层的架构。我觉得最有用的是研究ArcGIS提供的扩展例子和说明,在GOOGLE上搜索Extending ArcObjects可以找到许多相关例子。此外通过动手写一些组件,通过VC调试器查看AO的接口调用过程也能弄清楚具体调用细节。但是可以肯定地是清楚了解模式是所有这些的基础。
ArcGIS的API中最长用的几种模式有factory,bridge,facde,等等。日后会慢慢总结自己所做的逆向工程。因为ArcGIS在以后的产品进化过程中会往轻量级应用靠近(便于云部署),但是产品的设计框架会更强调架构上的灵活性。
- 设计模式之ArcGIS的API设计
- Command设计模式之监听器的设计
- API设计之超前设计
- API开发第三篇:PHP的设计模式之完美的单例模式
- API开发第二篇:PHP的设计模式之工厂模式
- C++ API 设计 之 “++”
- 从设计模式角度看ArcGIS Engine
- RESTful的Api设计之统一接口
- 设计模式的艺术之道--设计模式的基本概念
- 大话设计模式之设计模式遵循的七大原则
- 大话设计模式之设计模式遵循的七大原则
- 大话设计模式之设计模式遵循的七大原则
- java设计模式之-对设计模式的看法
- 《设计模式》笔记之几种重要的设计模式
- 设计模式之------设计模式中类的关系
- Java中常见的设计模式之工厂设计模式
- Java中常见的设计模式之代理设计模式
- Android设计模式之单例设计模式的优缺点
- 遍历删除map中元素的方法
- 好网站,要常来
- 第一个NDK程序
- 非阻塞式socket编程(select() ) - [linux开发]
- 2011程序员薪资调查揭晓:5年和5000元是分水岭
- 设计模式之ArcGIS的API设计
- 一本学习maven的书
- Java内存泄露和内存溢出详解
- 更改CDialogBar尺寸大小
- php 获取字符串 和 截取字符串
- Android 的属性系统(翻译)
- Android---Activity生命周期状态
- Adobe PDFReader Android源码
- MyEclipse 常用快捷键