




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、AUTHOR: Cliff Hall <>LAST MODIFIED: 3/05/2008翻译:张启智 <bbb:/aaamoorwindaaa>最后更新:2008/5/12目录PureMVC:框架的目标与优点1PureMVC框架概述1目标2优点2框架概述与UML视图3框架概述3Façade与核心类4View, Mediators and View组件4Model, Proxies与数据对象7Controller与Commands8View, Observer与Notification9接口11IFacade11IModel11
2、IView11IController12IProxy12IMediator12ICommand12IObserver13INotification13PureMVC:框架的目标与优点PureMVC框架概述PureMVC是一个轻量级框架,用于创建基于经典的模型-视图-控制器元模式的程序。该免费的开源框架可以应用于包括ActionScript 2、 ActionScript 3、Java、C#和其他一些流行的编程语言。他可以被部署在各种平台下,包括:l 移动环境:FlashLite, .NET Compact Framework, J2MEl 服务器环境:ColdFusion, J2EE, PHP
3、, Pythonl 浏览器环境:Flash/Flex, JavaFX, Silverlightl 桌面环境.NET, AIR, FLASH, J2SE目标PureMVC有一个非常狭隘的主要目标:用于帮助程序员分离代码为三个离散的层:即模型,视图和控制器。完成这个目标,推出一个稳定的框架是本文的主要目的。而通过提供一些实例和工具来阐述本框架的作用是接下来的工作。其它一些最初是由ActionScript3文献推动的目标有:l 简单且实用的框架范围l 减少由应用层、类的作用、职责和组合造成的程序混乱l 平衡可维护性与可扩展性之间的关系l 提供清晰和完备的文献l 避免平台依赖性l 对开发者隐藏复杂性l
4、 优秀的框架不需要持续的维护以推出新的特性优点框架的选择会严重影响到应用架构,进而影响到成本维护等。所以需要慎重选择。使用PureMVC框架进行开发具备下列好处:1) 基于设计模式l 支持已经被时间所证明的设计模式,可以部署于任何具备支持面向对象的环境l 简单易懂2) 实用的实现接口的类l 框架是“即开即用”的,只需要很小的实现需求l Façade类提供了与核心类交互的框架3) 松耦合架构l 提供可复用的组件、模型数据对象和服务l 包含发布/订阅风格(注:观察者模式)的通知l 建立明确的分离客户端三层编码关系4) 面向接口的编程l 框架支持子类或实现接口的扩展l 对所有的框架类定义接
5、口l 所有的类基于可扩展性思想,所有protected修饰的方法、属性、接口参数基于方法签名l 框架支持将来通过其他类库以分组模式进行扩展,并且与核心包的模式互不依赖5) 完备的文档l 源代码免费开放l 完备的源代码文档l 概念和统一建模语言(UML)视图l 所有类和接口的单元测试l 大量的示例代码和入门教程l 由架构师撰写的术语阐述与最佳实践l 已有数千名学生测试专业课程框架概述与UML视图框架概述本文讨论PureMVC框架的类和接口,通过简单的UML(统一建模语言)图表阐述他们的作用、职责和合作。PureMVC有一个非常狭隘的主要目标:用于帮助程序员分离代码为三个离散的层:即模型,视图和控
6、制器。在该经典的MVC元模式实现框架中,应用层有三个单例(一个只创建一次的类)所表示。而第四个单例,Façade类通过一个单一的接口为应用程序之间提供通讯,从而简化了开发。l 模型(Model)简单的指向Proxy的引用。Proxy代码负责操作数据模型,与远程服务通信存取数据。l 视图指向Mediator的引用。Mediator管理视图组件,增加事件监听器,操作视图组件的状态。l 控制器包括命令类及其映射。命令类是无状态的,只有需要时才被创建。l Façade单例初始化Model, View, Controller,并且能访问各层类的Public方法。Façade
7、与核心类Façade类令roxies, Mediators和Commands之间以松耦合的方式允许互相通信,而不需要导入或知道框架核心的存在。当我们创建一个Façade类具体的应用时,就可以“即开即用”的使用它了。附带的,与Façade类的交互将会最大化的降低开发者对API知识的了解程度。核心成员类Model, View和Controller分别实现了IModel, IView 以及 IController 接口,Façade类实现了由核心接口组成的IFacade接口。View, Mediators and View组件View类被实现为一个用来缓存指向
8、一个IMediator实例引用的单例。Mediators类帮助我们创建或者重用已经存在的用户接口组件,而不用让他们通讯的PureMVC程序的知识去影响他们。具体的Mediators实例必须实现IMediator接口,通常是作为Mediator类的子类来实现的。View视图用来显示数据和处理用户交互。在一个基于flash的应用程序中,他们通常通过使用事件和传递一些属性给其Mediators类去检查或者控制,以便与View的Mediators类交互。一个Mediator类通过View组件的数据与之建立了解。当一个Mediator 类的实例被view注册时,他会被假设为他需要获取通知。因此必须返回一
9、个包含所有他感兴趣数据的通知名数组。因为Mediator类必须实现IMediator接口,所以一个Mediator实例拥有handleNotification方法。当该实例被View组件注册,一个Observer实例就被创建并且被注册给每一个Notification的数组中。这样Mediator的handleNotification方法就被触发,而不论注册Notification的Mediator是否感兴趣。Mediator类由于实现了INotifier接口而具备了sendNotification方法,sendNotification方法的参数是一个新的Notification通知,而后使用一
10、个IFacade接口的单例去广播。Mediator类的protected属性被初始化用于注册IFacade实例,并且因此Mediator必须在主程序初始化Façade实例后被注册。Model, Proxies与数据对象Model类被实现为一个简单的指向IProxy引用的单例。Proxy类帮助我们暴露数据模型和实体类(当域逻辑和服务支持时)给应用程序,使得程序可以被其它地方被复用或重构。我们可能通过使用一个Proxy实例来简化指向本地数据对象的管理,在这种情况下交互可能引起一些数据的同步操作。一个Proxy实例也可能被用来进行程序的原创服务操作,加载或者保持数据。这时,我们可能需要出发
11、一个方法或者基于Proxy去设置数据,并且等待该Proxy从服务器成功加载到数据后广播一个Notification通知。Proxy类由于实现了INotifier接口而具备了sendNotification方法,sendNotification方法的参数是一个新的Notification通知,而后使用一个IFacade接口的单例去广播。Proxy类的protected属性被初始化用于注册IFacade实例,并且因此Mediator必须在主程序初始化Façade实例后被注册。Controller与CommandsMacroCommand类从它的构造函数中触发initializeMacro
12、Command方法。使用者必须在其子类中重写initializeMacroCommand方法,一般addSubCommand方法添加所有Command。可以使用SimpleCommands 或者 MacroCommands中的任何一种。View, Observer与NotificationProxies,Mediators与Commands类之间的通讯是通过广播Notifications来实现松耦合和跨平台特性的:l Proxies可以发送,但不能接收Notificationl Mediator声明感兴趣的Notification和接收Notificationl Commands被触发或广播NotificationsPureMVC应用程序可能运行在不能访问Flash Event和EventDispatcher类的环境中,所以框架使用观察者模式以一种松耦合的方式在Model, View, Controller之间通信。PureMVC使用观察者模式就是为了该目的。IObserver携带一个希望被关注(即“被关注的内容”)的对象引用,该对象的一个方法将会在INotification实例被广播(即“被关注方法”)时被触发。View组件的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重大项目决策会议纪要模板
- 农产品保鲜存储技术方案
- 2025年份第1季度GRG曲面模板养护周期控制技术细则
- 2024年份第2季度跨境细胞治疗技术转移合同临床试验备案条款
- 2024年投资咨询工程师考试冲刺试题及答案
- 艺术鉴赏与设计思维知识题集
- 2024年全球市场的信心影响因素试题及答案
- 深入了解2024年计算机二级考试试题
- 2025年-黑龙江省安全员知识题库附答案
- 2024年份第2季度按揭车辆转让区块链存证技术应用协议
- 常州地质勘察报告正文
- 库尔勒经济技术开发区总体规划环境影响报告书简本
- 多媒体技术ppt课件(完整版)
- 国家网络安全检查操作指南
- 精神科出科考试试题及答案
- ABAQUS粘聚力模型(CohesiveModel)应用小结
- DB44∕T 336-2006 锯缘青蟹养殖技术规范 人工繁殖技术
- DB13(J) 185-2020 居住建筑节能设计标准(节能75%)(2021年版)
- 房屋建筑和市政基础设施项目基本情况承诺(样表)
- 供应商产品及过程变更控制程序
- 《2022年上海市初中语文课程终结性评价指南》中规定的150个文言实词
评论
0/150
提交评论