ImageVerifierCode 换一换
你正在下载:

pureMvc.docx

[预览]
格式:DOCX , 页数:66 ,大小:242.49KB ,
资源ID:5864716      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5864716.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(pureMvc.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

pureMvc.docx

1、pureMvc实现术语阐述及最佳实践用 PureMVC 创建健壮、易扩展、易维护的客户端程序附 ActionScript 3 及 MXML 实例作者: Cliff Hall 翻译: 张泽远 Tamt 最后更新: 5/19/2008PureMVC 结构4Model 与 ProxyView 与 MediatorController 与 CommandFaade 与 CoreObserver 与 NotificationNotification可以被用来触发Command的执行Mediator发送、声明、接收NotificationProxy发送,但不接收Notification44455566Fa

2、ade7具体Faade是什么样子的?为程序创建Faade初始化Faade7710Notification12Event与Notification定义Notification和Event常量1213Command14SimpleCommand和MacroCommand的使用降低Command与Mediator, Proxy的耦合度复杂的操作与业务逻辑151516PureMVC 是 Futurescale 公司创建并维护的开源自由的程序框架。Futurescale, Inc. Copyright 2006-08, Some rightsreserved。使用 PureMVC 必须遵守美国 Crea

3、tive Commons 3.0 Attribution 协议。PureMVC、本文档以及任何从Futurescale 网站下载的文档、培训资料及示例代码,都不提供任何明示或者默示的担保,包括但是不限于是否符合特定的目的、未侵害他人权利的担保。Page 2 of 445/20/2008 11:17 PMMediator21Mediator的职责转化View Component类型监听并响应View Component在Mediator里处理NotificationMediator和Proxy之间、Mediator和其他Mediator之间的耦合用户与View Component和Mediato

4、r的交互212527222328Proxy33Proxy的职责转换数据对象避免对Mediator的依赖封装域逻辑与Remote Proxy通信3434363738启示PureMVC 是一个定位于设计高性能 RIA 客户端的基于模式的框架。现在它已经被移植到其他的平台上,包括服务器端环境。本篇文档论述针对于客户端。PureMVC 在不同平台语言下的阐述、实现,PureMVC 所使用的模式在“四人帮”的设计模式:可复用面向对象软件的基础一书中有很好的论述。强烈推荐。PureMVC 是 Futurescale 公司创建并维护的开源自由的程序框架。Futurescale, Inc. Copyright

5、 2006-08, Some rightsreserved。使用 PureMVC 必须遵守美国 Creative Commons 3.0 Attribution 协议。PureMVC、本文档以及任何从Futurescale 网站下载的文档、培训资料及示例代码,都不提供任何明示或者默示的担保,包括但是不限于是否符合特定的目的、未侵害他人权利的担保。Page 3 of 445/20/2008 11:17 PMPureMVC 结构PureMVC框架的目标很明确,即把程序分为低耦合的三层:Model、View和Controller。降低模块间的耦合性,各模块如何结合在一起工作对于创建易扩展,易维护的应

6、用程序是非常重要的。在PureMVC实现的经典MVC元设计模式中,这三部分由三个单例模式类管理,分别是Model、View和Controller。三者合称为核心层或核心角色。PureMVC中还有另外一个单例模式类Faade,Faade提供了与核心层通信的唯一接口,以简化开发复杂度。Model 与 ProxyModel 保存对 Proxy 对象的引用,Proxy 负责操作数据模型,与远程服务通信存取数据。这样保证了 Model 层的可移植性。View 与 MediatorView 保存对 Mediator 对象的引用 。由 Mediator 对象来操作具体的视图组件(View Component

7、,例如 Flex 的 DataGrid 组件),包括:添加事件监听器 ,发送或接收 Notification ,直接改变视图组件的状态。这样做实现了把视图和控制它的逻辑分离开来。Controller 与 CommandController 保存所有 Command 的映射。Command 类是无状态的,只在需要时才被创建。PureMVC 是 Futurescale 公司创建并维护的开源自由的程序框架。Futurescale, Inc. Copyright 2006-08, Some rightsreserved。使用 PureMVC 必须遵守美国 Creative Commons 3.0 At

8、tribution 协议。PureMVC、本文档以及任何从Futurescale 网站下载的文档、培训资料及示例代码,都不提供任何明示或者默示的担保,包括但是不限于是否符合特定的目的、未侵害他人权利的担保。Page 4 of 445/20/2008 11:17 PMPureMVC 结构Controller 与 CommandCommand 可以获取 Proxy 对象并与之交互,发送 Notification,执行其他的 Command。经常用于复杂的或系统范围的操作,如应用程序的“启动”和“关闭”。应用程序的业务逻辑应该在这里实现。Faade 与 CoreFaade 类 应 用 单 例 模 式

9、 , 它 负 责 初 始 化 核 心 层 ( Model , View 和Controller),并能访问它们的 Public 方法。这样,在实际的应用中,你只需继承 Faade 类创建一个具体的 Faade 类就可以实现整个 MVC 模式,并不需要在代码中导入编写 Model,View 和Controller 类。Proxy、Mediator 和 Command 就可以通过创建的 Faade 类来相互访问通信。Observer 与 NotificationPureMVC 的 通 信 并 不 采 用 Flash 的 EventDispatcher/Event , 因 为PureMVC 可能运行

10、在没有 Flash Event 和 EventDispatcher 类的环境中,它的通信是使用观察者模式以一种松耦合的方式来实现的。你可以不用关心 PureMVC 的 Observer/Notification 机制是怎么实现的,它已 经 在 框 架 内 部 实 现 了 。 你 只 需 要 使 用 一 个 非 常 简 单 的 方 法 从 Proxy,Mediator, Command 和 Facade 发送 Notification,甚至不需要创建一个Notification 实例。Notification可以被用来触发Command的执行Facade 保存了 Command 与 Notifi

11、cation 之间的映射。当 Notification(通知)被PureMVC 是 Futurescale 公司创建并维护的开源自由的程序框架。Futurescale, Inc. Copyright 2006-08, Some rightsreserved。使用 PureMVC 必须遵守美国 Creative Commons 3.0 Attribution 协议。PureMVC、本文档以及任何从Futurescale 网站下载的文档、培训资料及示例代码,都不提供任何明示或者默示的担保,包括但是不限于是否符合特定的目的、未侵害他人权利的担保。Page 5 of 445/20/2008 11:17

12、 PMPureMVC 结构Notification可以被用来触发Command的执行发出时,对应的 Command(命令)就会自动地由 Controller 执行。Command 实现复杂的交互,降低 View 和 Model 之间的耦合性。Mediator发送、声明、接收Notification当用 View 注册 Mediator 时,Mediator 的 listNotifications 方法会被调用,以数组形式返回该 Mediator 对象所关心的所有 Notification。之后,当系统其它角色发出同名的 Notification(通知)时,关心这个通知的Mediator 都会调

13、用 handleNotification 方法并将 Notification 以参数传递到方法。Proxy发送,但不接收Notification在很多场合下 Proxy 需要发送 Notification(通知),比如:Proxy 从远程服务接收到数据时,发送 Notification 告诉系统;或当 Proxy 的数据被更新时,发送 Notification 告诉系统。如果让 Proxy 也侦听 Notification(通知)会导致它和 View(视图)层、Controller(控制)层的耦合度太高。View 和 Controller 必须监听 Proxy 发送的 Notification

14、,因为它们的职责是通过可视化的界面使用户能与 Proxy 持有的数据交互。不过对 View 层和 Controller 层的改变不应该影响到 Model 层。例如,一个后台管理程序和一个面向用户程序可能共用一个 Model 类。如果只是用例不同,那么 View/Controller 通过传递不同的参数就可以共用相同的Model 类。PureMVC 是 Futurescale 公司创建并维护的开源自由的程序框架。Futurescale, Inc. Copyright 2006-08, Some rightsreserved。使用 PureMVC 必须遵守美国 Creative Commons 3

15、.0 Attribution 协议。PureMVC、本文档以及任何从Futurescale 网站下载的文档、培训资料及示例代码,都不提供任何明示或者默示的担保,包括但是不限于是否符合特定的目的、未侵害他人权利的担保。Page 6 of 445/20/2008 11:17 PMFaadeMVC 元设计模式的核心元素在 PureMVC 中体现为 Model 类、 View 类和Controller 类。为了简化程序开发,PureMVC 应用了 Faade 模式。Faade 是 Model、View 和 Controller 三者的“经纪人”。实际编写代码时你并不用导入这三者的类文件,也不用直接使用

16、它们。Faade 类已经在构造方法包含了对核心 MVC 三者单例的构造。一般地,实际的应用程序都有一个 Faade 子类,这个 Faade 类对象负责初始化 Controller(控制器),建立 Command 与 Notification 名之间的映射,并执行一个 Command 注册所有的 Model 和 View。具体Faade是什么样子的?Faade 类应被当成抽象类, 永远不被直接实例化。针对具体的应用程序,你应该具体编写 Faade 的子类,添加或重写 Faade 的方法来实现具体的应用。按照惯例,这个类命名为“ApplicationFacade”(当然,命名随你喜欢),如前所述,

17、它主要负责访问和通知 Command,Mediator 和 Proxy。通常,不同的运行平台都会创建视图结构,尽管创建过程不一样。(比如 Flex中 MXML 程序负责实例化所有子视图组件,Flash 影片在 Stage 上构建可视对象)。视图结构构建完毕时,整个 PureMVC 机制也已经安置妥当。创建的 Facade 子类也被用来简化“启动”的过程。应用程序调用 Facade 子类的 startup 方法,并传递自身的一个引用即完成启动,使得应用程序不需要过多了解 PureMVC。为程序创建FaadeFaade 类的内容很简单。思考下面的例子:PureMVC 是 Futurescale 公

18、司创建并维护的开源自由的程序框架。Futurescale, Inc. Copyright 2006-08, Some rightsreserved。使用 PureMVC 必须遵守美国 Creative Commons 3.0 Attribution 协议。PureMVC、本文档以及任何从Futurescale 网站下载的文档、培训资料及示例代码,都不提供任何明示或者默示的担保,包括但是不限于是否符合特定的目的、未侵害他人权利的担保。Page 7 of 445/20/2008 11:17 PMFaade为程序创建FaadeApplicationFacade.as:package com.me.m

19、yappimport org.puremvc.as3.interfaces.*;import org.puremvc.as3.patterns.facade.*;import com.me.myapp.view.*;import com.me.myapp.model.*;import com.me.myapp.controller.*;/ MyApp 程序的 Faade 类public class ApplicationFacade extends Faade implements IFacade/定义 Notification(通知)常量public static const STARTUP

20、:Stringpublic static const LOGIN:String= startup;= login;/得到 ApplicationFacade 单例的工厂方法public static function getInstance() : ApplicationFacadeif ( instance = null ) instance = new ApplicationFacade( );return instance as ApplicationFacade;/注册 Command,建立 Command 与 Notification 之间的映射override protected

21、function initializeController( ) : voidsuper.initializeController();registerCommand( STARTUP, StartupCommand );PureMVC 是 Futurescale 公司创建并维护的开源自由的程序框架。Futurescale, Inc. Copyright 2006-08, Some rightsreserved。使用 PureMVC 必须遵守美国 Creative Commons 3.0 Attribution 协议。PureMVC、本文档以及任何从Futurescale 网站下载的文档、培训

22、资料及示例代码,都不提供任何明示或者默示的担保,包括但是不限于是否符合特定的目的、未侵害他人权利的担保。Page 8 of 445/20/2008 11:17 PMFaade为程序创建FaaderegisterCommand( LOGIN, LoginCommand );registerCommand( LoginProxy.LOGIN_SUCCESS,GetPrefsCommand );/启动 PureMVC,在应用程序中调用此方法,并传递应用程序本身的引用public function startup( app:MyApp ) : voidsendNotification( STARTUP

23、, app );上述代码需要注意以下几点:o ApplicationFacade 继承自 PureMVC 的 Faade 类,Faade类实现了 IFacade 接口。o 这个例子里 ApplicationFacade 没有重写构造方法 。如果重写构造方法,应该在构造方法里先调用父类的构造方法。o 类方法 getInstance 用于返回 ApplicationFacade 的单例,并将实例保存在父类的一个 protect 变量中。在返回该实例之前必须先把它转化为 ApplicationFacade 类型。o 定义了 Notification 名称常量。Faade 类是整个系统其他角色相互访问

24、通信的核心,所以在这里定义 Notification(通知)名称常量是最合适的。PureMVC 是 Futurescale 公司创建并维护的开源自由的程序框架。Futurescale, Inc. Copyright 2006-08, Some rightsreserved。使用 PureMVC 必须遵守美国 Creative Commons 3.0 Attribution 协议。PureMVC、本文档以及任何从Futurescale 网站下载的文档、培训资料及示例代码,都不提供任何明示或者默示的担保,包括但是不限于是否符合特定的目的、未侵害他人权利的担保。Page 9 of 445/20/20

25、08 11:17 PMFaade为程序创建Faadeo 初始化 Controller(控制器),并建立 Command 与 Notification 之间的映射,当 Notification(通知)发出时相关的 Command(命令)就会被执行。o 提供一个带有应用程序类型参数的 startup 方法,该参数能过Notification 传递到 StartupCommand。实现这些只需要继承父类很少的功能。初始化FaadePureMVC 的 Faade 类在构造方法中初始化了 Model、View 和Controller 对象,并把对它们的引用保存在成员变量。这样,Faade 就可以访问 M

26、odel、View 和 Controller 了。这样把对核心层的操作都集中在 Faade,避免开发者直接操作核心层。那么,在具体的应用程序中,Faade 是何时何地初始化的呢?请查看下面的Flex 代码:MyApp.mxml:PureMVC 是 Futurescale 公司创建并维护的开源自由的程序框架。Futurescale, Inc. Copyright 2006-08, Some rightsreserved。使用 PureMVC 必须遵守美国 Creative Commons 3.0 Attribution 协议。PureMVC、本文档以及任何从Futurescale 网站下载的文档

27、、培训资料及示例代码,都不提供任何明示或者默示的担保,包括但是不限于是否符合特定的目的、未侵害他人权利的担保。Page 10 of 445/20/2008 11:17 PMFaade初始化Faade上面这个程序很简单:程序运行时创建视图结构,得到 ApplicationFaade 实例,调用它的 startup 方法。注意:在 AIR 中,我们会使用“applicationComplete”代替这里的“creationComplete”;在 Flash 中,我们可以把对 startup 的调用放在第 1 帧或文档类里。请注意例子中以下几点:o 我们使用了 MXML 标签,这种普遍的方式,创建程序的界面。以标签开始,包含组件或容器,不管是 Flex 内嵌的组件还是自定义的。o 声明并初始化了一个私有变量,(用于)获取 ApplicationFacade单例。o 我们初始化这个变量时使用了 getInstance 类方法,在应用程序的creationComplete 事件触发时,Facade 和相关的 Model,View,Controller 都已经实例化完毕(尽管此时还没有创建任何 Mediator和 Proxy)。o 我们在 Application 标签中指定了对 creationComplete 事件的处理过程:调用 startup 方法,并传参主程序的引用。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1