pureMVC简单示例及其原理讲解五(Facade)
2014-03-29 18:22
429 查看
本节将讲述Facade,Proxy、Mediator、Command的统一管家。自定义Facade必须继承Facade,在本示例中自定义Facade名称为ApplicationFacade,这个名称也是pureMVC组织建议的名称。先看代码:
Applicationfacade代码
package com.superwulei {
import com.superwulei.controller.StartupCommand;
import org.puremvc.as3.patterns.facade.Facade;
public class ApplicationFacade extends Facade {
public static const STARTUP:String = "startup";
public static const USER_ADD:String = "user_added";
public static const USER_DELETE:String = "user_delete";
public static function getInstance():ApplicationFacade {
if (instance == null)
instance = new ApplicationFacade();
return instance as ApplicationFacade;
}
public function startup(app:Object):void {
sendNotification(STARTUP, app);
}
override protected function initializeController():void {
super.initializeController();
registerCommand(STARTUP, StartupCommand);
}
}
}
ApplicationFacade中使用了单例模式,即整个应用程序中只会存在一个ApplicationFacade的对象。不清楚单例模式的朋友们可以通过静态方法getInstance中的代码思考一下,是不是这样。方法initializeController被重写,首先调用父类的initializeController方法,然后注册StartupCommand命令。还记得在上一章《pureMVC简单示例及其原理讲解——Controller 》中提到的StartupCommand么?它是一个复合命令,在这里注册了这个命令,其他的包括所有的Proxy、Mediator和AddUserCommand、DeleteUserCommand也会被同时注册。看一个startup方法,有一个Object类型的参数app,app接受的将是程序运行的类,没有它程序可以被加载但无法执行任何操作(这个方法具体细节本人有待研究,也欢迎广大朋友告之)。
主程序启动文件MyPureMVCdemo.mxml 代码
Mypuremvcdemo.mxml代码
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:components="com.superwulei.view.components.*"
creationComplete="facade.startup(this);">
<mx:Script>
<![CDATA[
import com.superwulei.ApplicationFacade;
private var facade:ApplicationFacade = ApplicationFacade.getInstance();
]]>
</mx:Script>
<components:UserForm id="userForm" />
<components:UserList id="userList" />
</mx:Application>
干净多了吧?在应用程序的creationComplete事件中加入facade.startup(this)的调用,其中this就表示的是当前启动类。这样一切就会通过facade走了。为方便各位更好的理解本文,本人已经将本示例上传,请点击下方的超级链接下载。
这样结束似乎很不圆满,我想在听到一些反馈之后在做小结,这样可以画上一个比较美的句号。
本人对于pureMVC的研究仅限于此,恳请各位pureMVC的研究者和使用者批评、指导!
这里是DEMO的下载地址
Applicationfacade代码
package com.superwulei {
import com.superwulei.controller.StartupCommand;
import org.puremvc.as3.patterns.facade.Facade;
public class ApplicationFacade extends Facade {
public static const STARTUP:String = "startup";
public static const USER_ADD:String = "user_added";
public static const USER_DELETE:String = "user_delete";
public static function getInstance():ApplicationFacade {
if (instance == null)
instance = new ApplicationFacade();
return instance as ApplicationFacade;
}
public function startup(app:Object):void {
sendNotification(STARTUP, app);
}
override protected function initializeController():void {
super.initializeController();
registerCommand(STARTUP, StartupCommand);
}
}
}
ApplicationFacade中使用了单例模式,即整个应用程序中只会存在一个ApplicationFacade的对象。不清楚单例模式的朋友们可以通过静态方法getInstance中的代码思考一下,是不是这样。方法initializeController被重写,首先调用父类的initializeController方法,然后注册StartupCommand命令。还记得在上一章《pureMVC简单示例及其原理讲解——Controller 》中提到的StartupCommand么?它是一个复合命令,在这里注册了这个命令,其他的包括所有的Proxy、Mediator和AddUserCommand、DeleteUserCommand也会被同时注册。看一个startup方法,有一个Object类型的参数app,app接受的将是程序运行的类,没有它程序可以被加载但无法执行任何操作(这个方法具体细节本人有待研究,也欢迎广大朋友告之)。
主程序启动文件MyPureMVCdemo.mxml 代码
Mypuremvcdemo.mxml代码
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:components="com.superwulei.view.components.*"
creationComplete="facade.startup(this);">
<mx:Script>
<![CDATA[
import com.superwulei.ApplicationFacade;
private var facade:ApplicationFacade = ApplicationFacade.getInstance();
]]>
</mx:Script>
<components:UserForm id="userForm" />
<components:UserList id="userList" />
</mx:Application>
干净多了吧?在应用程序的creationComplete事件中加入facade.startup(this)的调用,其中this就表示的是当前启动类。这样一切就会通过facade走了。为方便各位更好的理解本文,本人已经将本示例上传,请点击下方的超级链接下载。
这样结束似乎很不圆满,我想在听到一些反馈之后在做小结,这样可以画上一个比较美的句号。
本人对于pureMVC的研究仅限于此,恳请各位pureMVC的研究者和使用者批评、指导!
这里是DEMO的下载地址
相关文章推荐
- pureMVC简单示例及其原理讲解三(View层)
- pureMVC简单示例及其原理讲解四(Controller层)
- pureMVC简单示例及其原理讲解一(开篇)
- pureMVC简单示例及其原理讲解二(Model层)
- 一个简单的示例讲解游戏游戏编程原理。附示例源码(转)
- ORM,ASP.NET中ORM学习,ASP.NET中ORM学习心得,WEB2.0中ORM实现原理,Asp.net简单ORM示例源码详细讲解,Asp.net2.0:如何使用ObjectDataSource(配合ORM )
- 一个简单的示例讲解游戏游戏编程原理。附示例源码
- ORM,ASP.NET中ORM学习,ASP.NET中ORM学习心得,WEB2.0中ORM实现原理,Asp.net简单ORM示例源码详细讲解,Asp.net2.0:如何使用ObjectDataSource(配合ORM )(二)
- 可变参数的函数的原理及其简单模仿
- Skinned Mesh原理解析和一个最简单的实现示例
- spring rest 增删改查(put\delete\post\get)简单示例详细讲解
- [复变函数]第09堂课 作业讲解; 3 复变函数的积分 3.1 复积分的概念及其简单性质
- 一个简单的makefile示例及其注释
- 一个简单的makefile示例及其注释
- (转)小偷程序原理和简单示例
- PHP观察者模式原理与简单实现方法示例
- 大话变声原理 附简单示例代码
- Arduino+Avr libc制作Badusb原理及示例讲解
- jquery简单的拖动效果实现原理及示例