1、SRSIE版权所有地理信息系统教研室SRSIE版权所有地理信息系统教研室nGoogle Map带来的带来的GIS设计模式变革设计模式变革nGIS设计模式设计模式讲讲 授授 内内 容容n关于设计模式关于设计模式SRSIE版权所有地理信息系统教研室1、关于设计模式、关于设计模式n为什么需要设计模式为什么需要设计模式小小 系系 统统 开开 发发 不超过万行代码不超过万行代码 2-32-3个人个人 2-32-3个月完成个月完成 生命周期:生命周期:1-21-2年年平台大系统开发平台大系统开发 几十万行代码几十万行代码 20-3020-30个人个人 循环开发循环开发 版本升级版本升级架构系统架构系统套用
2、模型与架构,将前人的经验当作基石套用模型与架构,将前人的经验当作基石不允许失败不允许失败高超战术高超战术高超战术高超战术+高明战高明战略略SRSIE版权所有地理信息系统教研室1、关于设计模式、关于设计模式缘起于缘起于建筑界建筑界Christopher Alexander 之之 Pattern Language 一书一书“利用两百多种利用两百多种pattern所组成的语言就几乎可以所组成的语言就几乎可以表达所有的建筑与城镇。它们能够清楚的描述一个表达所有的建筑与城镇。它们能够清楚的描述一个地区的内容并能产生上百万种这种地区地区的内容并能产生上百万种这种地区例如下例如下面几种面几种patterns
3、:街道旁的私人坡地、充满阳光的街道旁的私人坡地、充满阳光的地方、户外的隔间、桌上的鲜花地方、户外的隔间、桌上的鲜花. ”Design Pattern 设计模式设计模式SRSIE版权所有地理信息系统教研室1、关于设计模式、关于设计模式“Each pattern describe a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this s
4、olution a million time over , without ever doing the same way twice.”强调在强调在“设计层次设计层次”上的可重用性上的可重用性 Design Pattern 设计模式设计模式SRSIE版权所有地理信息系统教研室1、关于设计模式、关于设计模式模式就是得到很好研究和应用范例模式就是得到很好研究和应用范例走为上走为上 围魏救赵围魏救赵 声东击西声东击西 设计模式是软件开发过程中经验的积累设计模式是软件开发过程中经验的积累特定问题的经过实践检验的特定解决方法特定问题的经过实践检验的特定解决方法不能为模式而模式不能为模式而模式三段论三段
5、论 SRSIE版权所有地理信息系统教研室1、关于设计模式、关于设计模式比比OO程序部份的抽象层次更高程序部份的抽象层次更高面对不同问题归纳出经验法则更进一步建立标面对不同问题归纳出经验法则更进一步建立标准化的词汇准化的词汇有经验与无经验的设计者间最大的差别在于前有经验与无经验的设计者间最大的差别在于前者可以者可以有效的利用以前的经验有效的利用以前的经验来解决类似的问来解决类似的问题题 Design Pattern 设计模式设计模式绝不是纸上绝不是纸上谈兵,而是谈兵,而是运筹帷幄运筹帷幄SRSIE版权所有地理信息系统教研室1、关于设计模式、关于设计模式提高软件的可复用性提高软件的可复用性灵活,适
6、应软件设计的变化灵活,适应软件设计的变化面向对象在实际应用中集中体现面向对象在实际应用中集中体现Design Pattern优点 SRSIE版权所有地理信息系统教研室1、关于设计模式、关于设计模式设计模式无处不在设计模式无处不在模式不是框架,不能套用模式不是框架,不能套用模式也不是过程,模式也不是简单的模式也不是过程,模式也不是简单的“问题的解问题的解决方案决方案” 系统的设计也不是含有设计模式就好系统的设计也不是含有设计模式就好更不是含有越多的设计模式就越好更不是含有越多的设计模式就越好n 正确运用设计模式正确运用设计模式SRSIE版权所有地理信息系统教研室1、关于设计模式、关于设计模式真正
7、为软件设计界带来系统化设计模式思维的是真正为软件设计界带来系统化设计模式思维的是Design Patterns: Elements of Reusable Object-Oriented SoftwareGamma等一共定等一共定义义了了23最通用的最通用的Design patterns此后各个领域开始出现各种此后各个领域开始出现各种模式化思维模式化思维网格网格架构架构实时系统实时系统集成集成Web / AJAX SRSIE版权所有地理信息系统教研室1、关于设计模式、关于设计模式父类产品父类产品子类产品子类产品A 子类产品子类产品B 子类产品子类产品C 工厂工厂客户客户简单工厂设计模式简单工厂
8、设计模式SRSIE版权所有地理信息系统教研室2、GIS设计模式设计模式CMapXPoints points; /声明声明Points变量变量points.CreateDispatch(points.GetClsid();CMapXRectangle rect; /声明矩形变量声明矩形变量rect.CreateDispatch(rect.GetClsid(); n 一个例子一个例子SRSIE版权所有地理信息系统教研室2、GIS设计模式设计模式CMapXFeature feature; /声明声明Feature变量变量if(!feature.CreateDispatch(feature.GetCl
9、sid() TRACE0(Failed to Create Feature object);return;CMapXPoints vtpoints; /声明Points变量CMapXFeatureFactory cFactory= m_Map.GetFeatureFactory();/创建特征对象feature = cFactory.CreateLine(vtPoints);feature.SetType(miFeatureTypeLine);n 一个例子一个例子SRSIE版权所有地理信息系统教研室2、GIS设计模式设计模式COM SRSIE版权所有地理信息系统教研室2、GIS设计模式设计模式
10、Framework 代码、类库、应用框架不仅仅是老板和项目经理眼中的产品,更是我们敝帚自珍的工作成果但修改自己的代码,尤其是因为上游需求不确定带来这种压力的时候,总不是那么愉快地经历我们要借鉴并应用那些成熟的套路,将变化抽象并集中在几个点,然后把他们交给运维人员来处理,而我们更多把时间放在创造性工作模式是现成的,但实现套路您自己的模式是现成的,但实现套路您自己的SRSIE版权所有地理信息系统教研室2、GIS设计模式设计模式MFC SRSIE版权所有地理信息系统教研室2、GIS设计模式设计模式BCG SRSIE版权所有地理信息系统教研室2、GIS设计模式设计模式Plug-in SRSIE版权所有
11、地理信息系统教研室2、GIS设计模式设计模式ArcMap应用程序构架应用程序构架ArcGlobe应用程序构架应用程序构架SRSIE版权所有地理信息系统教研室2、GIS设计模式设计模式Web Service SRSIE版权所有地理信息系统教研室3、Google带来的带来的GIS设计模式设计模式SRSIE版权所有地理信息系统教研室3、Google带来的带来的GIS设计模式设计模式Google 模式的特征模式的特征数据传输快,显示迅速数据传输快,显示迅速(金字塔、缓存)(金字塔、缓存)交互性好(交互性好(JS、AJAX)互操作(互操作(API)SRSIE版权所有地理信息系统教研室3、Google带来的带来的GIS设计模式设计模式ArcGIS Server模式模式ADFREST: JS API、Flex API、Silver light APIRESTADF偏重于客户端,调用接口服务端,调用Server对象适合业务简单的WebGIS应用适合复杂定制,尤其与用户现有系统结合的WebGIS应用受限于接口提供的功能可通过ServerContext调用对象功能强大,定制灵活开发简便快速需要熟悉ADF组件SRSIE版权所有地理信息系统教研室模式无处不在!模式无处不在!