- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
观察者模式与命令模式在VTK中应用探析
观察者模式与命令模式在VTK中应用的分析 摘 要VTK(Visualization Toolkit)是一个面向对象的三维可视化的算法库,VTK因其良好的封装性被广泛应用。观察者与命令模式(Observer/Command Pattern)在VTK中的使用进一步地提高了其在三维可视化应用方面的可扩展性,简化了VTK开发中的程序结构框架的设计。本文依据观察者模式与命令模式的实现原理、优点及其在软件中的应用,分析了VTK中观察者/命令模式的实现机制,并以Picker为例总结观察者/命令模式在VTK中的应用
【关键词】观察者模式 命令模式 VTK 设计模式 三维可视化
Visualization Toolkit(VTK )是由Kitware公司于1994年发布的基于OpenGL的面向对象的可视化工具包。VTK最早应用于医学方面,由于其算法的日趋成熟,其应用领域也包括了测绘、人机交互、CAD等。在测绘领域中,VTK可以将车载式、船载式移动测量中的点云数据进行逼真的渲染,将数据以图像的形式体现出来,奥地利Riegl公司开发的RiSCAN_PRO软件,图形处理软件ParaView以及Point Cloud Library(PCL)类库,均使用VTK作为其数据显示的底层算法库
随着计算机科技的越发普及,软件设计的要求也越来越高,高效化已经成为程序设计者共同追求的目标。特别是在带有UI界面的程序中,消息响应的便捷性会极大的提高程序开发的效率,提高用户的操作速度。VTK作为一个大型可视化算法库,由于VTK自身的封装性,使程序员在利用VTK的开发过程中束缚于仅有的对外公开接口,但VTK提供了观察者/命令模式来实现其消息响应,使开发者可以自定义事件的响应,减小VTK封装性带来的束缚
本文主要就以观察者/命令模式在VTK中应用作为研究对象,分别阐述观察者模式和命令模式的定义及其在软件开发中的用途,并以VTK中的Picker为列进一步说明观察者/命令模式在程序设计中的优越性
1 观察者模式
1.1 观察者模式的定义
观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图 (Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式,它将主题对象和其行为分隔开,降低耦合性,更好地实现类的继承,提高程序设计的效率
1.2 观察者模式的优点
在观察者模式中,主题对象与观察者对象间是一种一对多的依赖关系,当一个主题对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种设计模式相对于其他设计模式有很多优点:
(1)打破了程序设计中主题对象与观察者对象一对一的关系,使一个主题对象可以对应多个观察者对象
(2)主题对象提供一个使观察者对象得到通知的公共更新接口
(3)主题对象与观察者对象的连接方式为松耦合,主题对象无法得知观察者对象的具体信息,只知道主题对象是否连接了注册接口
(4)多个观察者对象共存时,其得到的通知次序与其本身特点无关
1.3 观察者模式的应用
面向对象开发的一个主导原则是,在给定的应用程序中正确地分配任务。程序开发人员在开发程序的过程中,需要对一些数据的变化做出反应时,如果使用单线程定期去检测数据的变化会导致效率低下,若使用观察者模式,当观察者对象发生变化时可以自动更新观察者对象来提高程序开发的效率,简化系统开发结构,因此观察者模式在软件开发过程中比较常用
1.3.1 观察者模式角色
在软件设计中观察者模式的实现由以下对象组成:
(1)抽象主题(Subject):主体对象将与其相关的多个观察者对象的引用保存在一起,主题对象提供一个接口供其管理观察者对象,进行删除和添加操作
(2)具体主题(ConcreteSubject):保存对具体观察者对象有用的内部状态;在内部状态改变时给观察者对象发出一个通知
(3)抽象观察者(Observer):为所有的具体观察者提供一个接受通知进行更新的接口
(4)具体观察者(ConcreteObserver):保存一个指向具体主题对象的引用,实现抽象观察者角色所要求的更新接口,以便使本身的状态与主题状态相协调
1.3.2 观察者模式的结构与实现
当具体主题被动或主动发生改变导致其状态与观察者状态不再一致时,它将通知与其相关的观察者。具体观察者得到来自具体主题的通知后,可向具体主题查询并获得改变信息,通过这些改变信息,具体观察者改变状态使其与具体主题的状态一致。如图1所示
在观察者模式的实现过程中,若一个观察者对象主动对主题对象进行注册,即表明该观察者对象希望获得主题对象的变化状态,当主题对象的状态
文档评论(0)