pureMVC简单示例及其原理讲解
——Facade
pureMVC是一个MVC框架,核心部分包括Proxy、Mediator、Command和Facade,Facade同意管理前三个核心部分。
上一篇我们讲解了本示例中的Controller层,Controller层中包含添加用户命令、删除用户命令、注册View层的命令、注册Model层的命令和一个复合命令注册所有的这些和添加/删除用户命令。至此为止,我们讲解了pureMVC示例的MVC三层,但是整个应用程序目前仍然无法启动,正确运行。不要着急,看完本节,程序就可以运行了。
本节将讲述Facade,Proxy、Mediator、Command的统一管家。自定义Facade必须继承Facade,在本示例中自定义Facade名称为ApplicationFacade,这个名称也是pureMVC组织建议的名称。先看代码:
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
代码
<?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的研究者和使用者批评、指导!
上一篇
分享到:
相关推荐
【标题】"PureMVC简单示例及其原理讲解"涉及的是一个开源的、跨平台的MVC(Model-View-Controller)框架——PureMVC。PureMVC以其轻量级和高度可扩展性,在开发中得到了广泛应用。这篇博客文章通过一个简单的示例,...
通过学习这个实例,开发者可以更好地理解PureMVC框架的工作原理,以及如何在实际项目中应用它来组织代码和实现业务逻辑。这对于提升ActionScript或Flex开发者的技能和提高代码复用性非常有帮助。
PureMvc是一个开源的、轻量级的框架,用于构建多层结构的富客户端应用程序。它遵循Model-View-Controller(MVC)设计模式,并提供了一种标准化的方式来组织和协调应用程序的各个部分。在这个名为"MyFirstPureMvc"的...
**PureMVC框架详解** PureMVC是一种轻量级、模型-视图-控制器(Model-View-...通过学习和实践"PureMVCExample"中的示例,你可以深入理解PureMVC的工作原理,并将其应用到自己的项目中,提升开发效率和代码质量。
标题 "PureMVC 中文版" 指的是 PureMVC 框架的一个中文版本,这是一款广泛应用的开源框架,特别设计用于构建富互联网应用程序(RIA),尤其是基于Adobe Flex和ActionScript 3的项目。PureMVC 提供了一种模块化、结构...
这个“PureMVC简单例子”是为了帮助初学者理解PureMVC框架的基本原理和实际操作流程。在这个例子中,我们将深入探讨各层的职责以及它们之间的通信机制。 首先,我们来了解一下MVC模式。MVC模式是一种软件设计模式,...
6. **Larena2.0与3.0APP框架差异——pureMVC架构的解析与仿制.ppt**:这个文件可能详细分析了Larena应用程序框架在2.0和3.0版本中如何采用PureMVC架构,并可能讨论了它们之间的差异和改进之处。 7. **pureMVC类成员...
6. **Facade**:`Facade`是整个PureMVC架构的门面,它提供了一种简单的方式来与框架的其他部分交互,减少了组件间的耦合。 在`PureMvcDemo`中,你可以看到如何将这些组件组合在一起,创建一个简单的应用。这个示例...
压缩包内的中文文档提供了PureMVC框架的详细解释,包括基本概念、使用方法、示例代码和最佳实践,对于初学者来说是非常有价值的参考资料。 通过学习和使用这个PureMVC实例及中文文档,开发者能够更好地理解如何在...
- 示例代码:PureMVC官方仓库包含不同语言版本的示例项目。 - 开发者社区:加入PureMVC开发者社区,与其他开发者交流经验。 通过理解和实践PureMVC AS3,开发者能够构建出高效、模块化的ActionScript 3应用程序,...
这个是一个根据AS3(ActionScript 3) pureMVC而转换过来的lua pureMVC。所有的接口完全跟AS3版本一致。 若是想使用,可以直接查看网上的pureMVC 文档,我并未对任何一个函数改名或者更换参数位置。 注意,这个PureMVC...
PureMVC是一个开源的、轻量级的MVC(Model-View-Controller)框架,它最初是为ActionScript设计的,但后来发展出了多种语言版本,包括C#。本压缩包"PureMVC.rar"提供了PureMVC在C#平台上的实现,包括单线程版和多...
《PureMVC登录示例详解》 在软件开发中,框架的选择往往对项目的架构和可维护性起到关键作用。PureMVC,一个轻量级、跨平台的MVC(Model-View-Controller)框架,因其简洁的设计和强大的组织能力,受到了许多开发者...
PureMVC是一个轻量级的MVC(Model-View-Controller)框架,旨在最小化不同组件之间的耦合。它的设计理念是提高代码的可维护性和可...学习和理解PureMVC的原理,可以帮助开发者构建出更加模块化、易于维护的软件系统。
Unity3D客户端PureMVC框架视屏讲解是一个深入解析如何在Unity3D环境中应用PureMVC框架的教学资源。PureMVC是一种轻量级、模块化的前端框架,它为游戏开发提供了一种组织代码的结构,使得项目更易于维护和扩展。在...
在实际使用中,PureMVC提供了`Facade`作为全局的单例,统一管理模型、视图和控制器。开发者可以通过`Facade`实例注册Mediators、Commands和Proxies,以及发送`Notification`。这样,即使项目规模增大,代码也能保持...
"表示这不仅仅是一个概念介绍,还提供了实际的代码示例,学习者可以直接查看和运行这些源代码,加深对PureMVC的理解。 标签进一步细化了主题,"csharp"指明是C#语言相关,"puremvc"是框架的名字,"puremvc_c"和...
6. **Hello World示例**:通常会通过一个简单的“Hello World”程序来演示PureMVC的基本工作流程,展示如何创建并运行一个完整的MVC循环。 7. **源码分析**:可能对PureMVC的源码进行解析,帮助理解其内部机制和...
6. **Multiton**:PureMVC采用了一个特定的单例模式变体——Multiton,即每个MVC组件(Model、View、Controller)都有自己的全局唯一实例,确保了在整个应用程序中,这些组件可以被正确地管理和访问。 在`luaMVC-...