原文地址:http://bbs.9ria.com/viewthread.php?tid=59867&from=favorites
看到一篇比较浅显的PuerMVC的帖子,觉得不错,刚接触的同学可以看看。
原文后面提供有演示,这里也有,我做了小修改
原文地址:http://hi.baidu.com/kmjy/blog/item/cf24fef94fe39c51252df29a.html
菜鸟学PureMVC记
2009年06月11日 星期四 19:03
最近工作中需要用到FLASH,开发框架中又是以PureMVC为主。MVC是有了解,但是PureMVC这个之前则是从没接触过。那就学呗~~
说学就学,可是第一步就让我感觉很费事~~(哎~菜鸟当久了)。要开始学,得先下个PureMVC框架装上吧。找了半天PureMVC框架,下载下来后,发现是一个压缩包,大小只有几百K(心存怀疑,怎么这么小呀)。解压之后,根据惯性开始寻找一个类似Setup的东东。狂汗,就是找不到这个东西。这下我认定刚才下错东西了。于是,在网上又是一阵狂搜,结果证明自己没下错。-_-!!!
下载链接:http://trac.puremvc.org/PureMVC_AS3/
第二步,开始安装PureMVC。没有setup,怎么装呢?是不是添加引用就可以了呢?可是又该怎么添加呢?(我用得是FlashDevelop这个编辑AS的软件)网上又是一阵狂搜,可搜到的都是谈论PureMVC的架构怎么样或者pureMVC具体应用怎么写,就是没有介绍刚开始该怎么配置的。“最危险的地方就是最安全的地方”,结果在PureMVC的下载页内找到了“Installation ”字样。其中的大概做法,就是解压,然后将“PureMVC_AS3_2_0_4.swc ”添加到项目的库中。因为,我用的是FlashDevelop,所以添加方法如下:选中项目的lib文件夹-》右键添加存在的文件-》选择PureMVC_AS3_2_0_4.swc-》右键单击添加进来的这个文件-》选择添加到库中(Add To Library)。这样便可以算前期工作全部结束了。
第三步,查找关于PureMVC的介绍,补一下理论知识。这些东西,网上超多,我就不介绍了。提供几个链接,供大家学习。
最佳实践[中文版]:http://puremvc.org/component/option,com_wrapper/Itemid,183/
PureMVC教程[英文]:http://www.actionscriptdeveloper ... iff-3-introduction/
简单的说,PureMVC源于MVC模式,主要就是Model、View、Controller这三层次。但在PureMVC中上述三个都被封装成了三个核心层,并通过单例模式提供给应用程序。开发人员不需要直接使用这三个核心层。PureMVC为了简化开发复杂度,提供了一个Facade类,该类提供了与核心层通信的唯一接口,可以初始化上述三个核心层,并可以访问它们的public方法,同时该类也是以单例模式提供给应用程序。开发人员只需要继承一个Facade类并创建具体的Facade类就可以实现整个MVC模式。除了知道Facade类之外,还需要了解与三个核心层相辅助的三个类:Proxy、Mediator、Command。
Proxy,可以理解为代理,负责操作数据的存取。
Mediator,可以理解为媒介,负责UI层与控制层之间的沟通。
Command,则是用来操作具体的业务逻辑。
为了对这三个核心层尽量的解耦,PureMVC中采用了消息机制,层与层之间的通信通过发送消息(notification)来实现。消息发送者只需要实现发送,不需要知道谁会接收这些消息。消息接收者如果需要接收消息,只需要注册一下对应的消息就可以了。如:registerCommand(START_UP, StartUpCommand);这句话产意思就是注册了一个对应关系,其中START_UP是消息的名称,StartUpCommand则是一个Command,这样当有人发送了START_UP名称的消息后,就会由StartUpCommand进行处理。
第四步,动手写自己的Demo(在我的这个Demo中,实现功能很简单:记录每次鼠标单击时在X方向上的偏移量)。
1)创建一个新的项目,就叫做 "MyFirstPureMvc” 吧。新创建的项目,应该可以看到bin、lib、src这三个文件夹,在src下有一个main.as文件,bin下有一些用于呈现网页的文件(项目中基本不需要用到)。
2)在lib文件夹中添加PureMVC_AS3_2_0_4.swc,并添加到库中。
3)在src文件夹中添加三个子文件夹:Model、View、Controller。Model文件中放置MouseClickProxy.as文件。View中放置StageMediator.as文件。Controller中放置StartUpCommand.as和MouseClickCommand.as这两个文件。具体内容,请看下面。
4)在src文件夹中接着添加ApplicationFacade.as文件,名称可以不一样。这个主要是用来继承Facade类的。如果你了解了基本的PureMVC框架结构之后,应该明白Facade这个类的重要性。
pa
- ckage
- {
- import org.puremvc.as3.patterns.facade.Facade;
- import controller.*
- /**
- * Facade模式来实现统一的接口,对外只提供了startup方法用于启动
- * 在该类被创建的时候会自动调用initializeController方法,需要在该方法中对Command进行注册
- * 接着,调用startup方法启动(也就是发送一个消息,因为之前已经注册了Command,所以相应的方法会去执行execute进行响应)。
- * @author
- */
- public class ApplicationFacade extends Facade
- {
- public static const START_UP:String = "START_UP";
- public static const MOUSE_CLICK:String = "MOUSE_CLICK";
- public static function getInstance(): ApplicationFacade {
- if (instance == null) {
- instance = new ApplicationFacade();
- }
- return instance as ApplicationFacade;
- }
-
- public function startup(app:Object):void
- {
- sendNotification(START_UP, app);
- }
-
- override protected function initializeController():void {
-
- super.initializeController();
- registerCommand(START_UP, StartUpCommand);
- registerCommand(MOUSE_CLICK, MouseClickCommand);
- }
- }
- }