`
taomujian
  • 浏览: 111283 次
  • 性别: Icon_minigender_1
  • 来自: 安徽-合肥
社区版块
存档分类
最新评论

PureMVC使用心得

    博客分类:
  • FLEX
阅读更多

       PureMVC大大的优化了我们使用FLEX进行前台的开发,使得整个开发过程变的较为可控,但是如果放任程序员去自由的使用pureMVC也会带来很大的隐患。本文内容主要记录我使用pureMVC开发原型这一个星期来使用的一些开发规范和经验总结。

1.  如果有个项目有几个开发人员共同开发,同时采用版本控制工具对项目项目的源码进行版本控制,可是维护

知的名称着实让人烦恼,我们若要将通知名称放在同一 个类中{ApplicationFacade}就不能很好的使用版本控制工具,因为每个人都要修改这个类 {在你修改时你要看看别人是否已经修改该文件,别人若是修改了还得让他提交,然后自己更新再修改,太痛苦了!} ,而且都放在一个类里也会增加维护的难度,那么有没有什么好的办法呢?

 

     通常一两个人做个例子时遇到这种情况可能比较好解决,单如果参与的人较多的化,可能花在协调上面的工作

量就会比较多,为了增加开发的速度,使开发变的更加的简单,我们可以让通知名称分散到各个模块的Mediator

类中进行维护{每个模块主页面的协调类,可根据自己的系统大小控制粒度},这样每个开发人员可以只要维护自身的通知名称或者只要与一两个人进行协调,同时我们要求每个通知名称都要包含该类所在的包路径和类名称,具体的格式可以是“通知名称+包路径.类名称”,这样我们只要保证通知名称唯一,且便于日后维护。

 

2.  每个MediatorProxy都要定一个NAME属性,通常我要求每个NAME属性必须是“包路径+类名称”,也是 

为了避免不必要的冲突,找半天BUG

 

3.  PureMVCMediator似乎什么都可以坐了,Command的用处似乎不大。

     这是一个错误的看法,虽然我们在Mediator中可以直接获取到ProxyMediator类的对象,也可以注册

MediatorProxyCommand,但是我们必须给自已一个约束,不然随着开发的不断深入你会发现代码也越来越乱。所以我们增加了较为严禁的约束:

      

       3.1 通常情况在程序启动后,Mediator负责注册Command,以及派发通知和接收通知,当Mediator类需要进行当前范围外的一些操作时就可以通过派发通知的方式。一般来说页面UI主要负责页面的布局和简单的作,其他的应该交由Mediator来处理。例如,Mediator协调的UI需要获取数据,这是Mediator可以派发一个获取数据的通知(之前已经注册一个用于处理该通知的Command),然后有pureMVC会初始化被注册的Command并执行获取数据的操作。如果你需要告知另外一个页面进行某些操作或者增加一个新的页面,也应该通过派发通知的方式来处理,应避免在当前Mediator类中直接获取响应页面的对象或者获取Mediator类进行操作,如果是增加一个新的页面应当在页面加载后将该页面的对象作为报体通知Command进行注册以及其他操作。

      

       3.2 Command主要负责注册MediatorProxy以及协调MediatorProxy之间的操作,应当将复杂的操作放在这里处理。Command的注册不必集中但也不可以太过分散,一般来说放在比功能级稍大点的Mediator中来注册(例如一个增删改查,4个页面需要不停的切换,关于这4个页面功能的Command一般来说都是放在这四个页面的上一层页面的Mediator中进行注册,也就是管理这四个页面的Mediator中)。当我们要增加啊一个新的UI时需要通知Command来注册Mediator,需要调用model层对数据进行处理时也应通知Command来调用,如果一个Command类里的代码过多,应当考虑进行拆分,Command类应尽可能分的细点,便于维护。

  

     3.3Proxy主要负责对数据的维护以及与服务器端进行通信处理数据。Proxy应当做到只做纯粹的数据处理不干涉过多的逻辑处理,不关心外面发生了什么事情,只要在数据处理后派发通知来通知外界即可,如果各个Proxy之间需要进行交互,那也应该在Command中来是先调用不用Proxy的方法,不要在Proxy中直接去调用另一个Proxy更不能去调用Mediator

 

4.注意清除你不用的MediatorProxyCommand应当及时的清除,pureMVC采用观察者模式,及时的清楚能减轻系统的负担,但是有时无法做到清楚指定的Mediator等对象,所以在每次注册新的MediatorCommandProxy时要判断是否已经存在相同的类,然后根据自己的需要选择是重新注册还是继续使用以前的,切不可同时注册两个相同的,例如:当你有两个相同的Mediator时,你通过NAME属性去获取该对象,那究竟获取哪一个对象才是你想要的呢?

分享到:
评论
4 楼 碧海山城 2009-02-15  
先收藏了再说
3 楼 taomujian 2009-02-09  
puremvc比较适合较小的项目,如果项目比较大那么最好能够加入IOC容器配合使用,如果只使用pruemvc,那就需要对项目有个较为规范合理的规划,这个可能需要更多的项目经验来支撑。另外关于Command的使用方式,我目前是采用将一个较小的功能采用一个Command来集中响应用户的操作,如果该功能较大,则根据操作的相似性拆分Command,这里主要是个粒度的把握问题,只要便与代码的维护应该就可以了。

关于我用pureMVC写的例子出于公司的保密性恐怕暂时不能发给你了,不过你有何问题或者看法可以留言或者给我邮件,我会及时和你讨论的。
2 楼 NewTamato 2009-02-05  
还有一个问题,这样写出来的代码会不会有太多的command和proxy。ui上面的触发都需要command来处理。这样很明显的command就会很多。这样用puremvc岂不是很麻烦?希望大侠尽快回答!
1 楼 NewTamato 2009-02-04  
你能不能将你的利用pureMve写的完整的程序例子发来一份看看。我看了你的这篇文章觉得你在这方面肯定已经弄得明白了。但是我只看这篇文章还是明白不到你的程度。
谢谢啊

相关推荐

    PureMVC 中文版

    这份文档可能涵盖了如何在实际项目中有效使用PureMVC,包括如何定义和使用模型、视图和控制器组件,以及如何利用PureMVC的其他关键特性,如命令模式、通知系统和多层架构等。 PureMVC 的主要特点包括: 1. **多层...

    [转] PureMVC心得教程:使用puremvc框架实现的贪吃蛇

    PureMVC是一个轻量级的、跨平台的MVC(模型-视图-控制器)框架,主要用于构建可维护性和扩展性高的应用。本教程将基于PureMVC框架讲解如何实现一个经典的“贪吃蛇”游戏,以此来深入理解PureMVC的核心概念和工作流程...

    Lua实现PureMVC

    若是想使用,可以直接查看网上的pureMVC 文档,我并未对任何一个函数改名或者更换参数位置。 注意,这个PureMVC中的 class(ClassName, BaseName) 函数并不提供,因为此框架本意就是为了用于cocos2d-x-lua中。

    可以运行的puremvc的登陆实例.

    标题中的“可以运行的PureMVC的登陆实例”是指一个基于PureMVC框架的登录功能实现,这个实例已经经过验证可以在FlexBuilder3环境下正常运行。PureMVC是一种经典的多层应用架构模式,它为ActionScript、JavaScript、...

    PureMVC中文教程

    iteye是中国知名的技术社区,博客作者通常会分享自己的编程经验和心得,这对于理解PureMVC的实际应用和解决常见问题有很大帮助。 标签“源码”意味着教程可能包含了PureMVC框架的源代码分析,这对于开发者深入理解...

    PureMVC.rar

    4. **通知(Notification)**:PureMVC使用`Notification`作为各个组件间通信的主要手段。Notification是一个简单的事件对象,包含一个名称和可选的附加数据,允许任何组件发送通知,并让其他组件订阅并响应。 5. *...

    PureMVC总结(附Hello World含PureMVC源码代码和文档)

    1. **PureMVC的安装与基本使用**:如何下载和引入PureMVC库,创建第一个PureMVC项目,设置框架的初始化。 2. **PureMVC的核心组件**:深入理解`Proxy`、`Mediator`、`Command`和`Notification`的职责和使用方法。 ...

    Unity 专用 pureMVC

    本篇文章将深入探讨Unity中如何使用PureMVC框架,以及它如何帮助实现UI和逻辑的分离。 PureMVC是一个轻量级的框架,其核心概念包括模型(Model)、视图(View)和控制器(Controller)。在Unity中,这些概念被转化...

    cocoscreator使用puremvc

    在Cocos Creator中使用PureMVC,主要是为了实现更好的模块化、可维护性和可扩展性。PureMVC遵循模型-视图-控制器(Model-View-Controller)设计模式,通过将业务逻辑、用户界面和数据分离,提高了代码的组织结构和...

    pureMVC_AS3

    了解和使用PureMVC AS3,可以通过以下资源进行深入学习: - 官方文档:http://puremvc.org/ - 示例代码:PureMVC官方仓库包含不同语言版本的示例项目。 - 开发者社区:加入PureMVC开发者社区,与其他开发者交流经验...

    PureMvc实例 PureMvc第一个实例

    在这个名为"MyFirstPureMvc"的压缩包中,你将找到一个使用PureMvc开发的Adobe AIR项目的完整实例,这将帮助初学者理解如何在实际项目中应用PureMvc。 首先,让我们深入了解一下PureMvc的MVC架构: 1. **模型...

    pureMVC源代码

    在你提供的压缩包中,"PureMvcDemo"可能是一个包含PureMVC框架示例应用的文件夹,用于帮助开发者理解如何在实际项目中使用PureMVC。 **纯MVC框架的核心概念** 1. **模型(Model)**:模型层负责处理应用程序的数据...

    PureMVC_CSharp.zip_csharp_pureMVC_pureMVC C_pureMVC C#_疯铮铮

    PureMVC是一个开源的、轻量...总之,这个压缩包为学习和使用C#版PureMVC的人提供了宝贵的资源,通过研究源代码,你可以了解到如何在实际项目中应用MVC模式,以及如何利用PureMVC的特性来提高代码的可维护性和可扩展性。

    pureMVC资料包

    在PureMVC资料包中,`puremvc_swf.swc`可能是一个已经编译好的PureMVC库,可以直接在Flash或Flex项目中导入使用。它提供了所有必要的类和接口,如MacroCommand、SimpleCommand、Mediator、Proxy、Notifier等,这些都...

    puremvc开发指南

    描述中的 "PureMvcHelp 中文.CHM" 和 "puremvc.pdf" 提示我们,这个压缩包包含了一份中文版的 PureMVC 帮助文档(可能是CHM格式的离线帮助文件)和一份 PDF 文档,这些资源可以帮助开发者深入理解和使用 PureMVC ...

    基于PureMVC框架实现的Qt的一个例子

    **PureMVC框架详解** PureMVC是一种轻量级、模型-视图-控制器(MVC)框架,最初是为ActionScript开发的,后来被移植到多种编程语言中,包括C++。它提供了一种组织代码结构的方式,使得开发者可以更高效地构建可维护...

    puremvc实例+中文文档

    通过学习和使用这个PureMVC实例及中文文档,开发者能够更好地理解如何在ActionScript项目中应用PureMVC框架,提高开发效率,降低维护成本。无论是对于个人项目还是团队协作,PureMVC都是一个值得信赖的工具。

    PureMVC C++架构代码

    5. **Notification(通知)**:PureMVC使用`Notification`对象作为不同组件间通信的机制。`Notification`包含一个名字和可选的携带数据,可以被任何组件发送,并被任何监听者接收。 6. **MacroCommand(宏命令)**...

    一个很好的puremvc实例

    在这个实例中,开发者可能已经展示如何在ActionScript或Flex环境中有效地使用PureMVC。 描述部分由于被省略,我们可以假设这个实例可能包含了如何组织代码、定义模型、视图和控制器组件,以及如何利用PureMVC的多...

    PureMVC五子棋游戏源码,学习PureMVC

    《深入理解PureMVC:基于五子棋游戏的源码分析》 PureMVC是一个流行的、开源的、轻量级的、跨平台的MVC框架,它为开发人员提供了一种结构化的编程模式,用于组织和管理应用程序的业务逻辑、用户界面和数据。在这个...

Global site tag (gtag.js) - Google Analytics