PureMVC框架应用简述
一.介绍
PureMVC是基于MVC思想建立的一个轻量级的应用框架,这套框架有多种语言的版本
ActionScript 2
ActionScript 3
C++
C#
ColdFusion
Dart
Haxe
Java
JavaScript
Objective C
Perl
PHP
Python
Ruby
TypeScript
且大多数语言都支持两个版本的框架,一个是标准版,不支持多模块,另一个是multicore版,支持多模块。
从https://github.com/PureMVC我们可以得到这些框架,和一些应用框架的demo。
二.Model,View,Controller和Facade
Model,View,Controller和Facade都使用单例模式,Modal主要通过维护proxyMap来提供对各种数据的访问。View主要通过维护MediatorMap来提供对视图的操作,通过维护observerMap使得视图响应各种事件。Controller通过维护commandMap来处理各种事件。
而Facade为Model、View和Controller提供一致对外的界面,定义了一组高层接口,这使得子系统更容易使用。引入Facade后,外部调用子系统只需要通过Facade就可以了,在Facade里面封装对Model、View和Controller的调用。在我们利用PureMVC框架时,最佳实践是一般不用去继承Model、View和Controller定义子类来获得对数据,事件的支持,而是通过定义一系列的Proxy,Mediator和Command来定义数据,处理事件,并通过定义Facade的子类来将这一系列的Proxy,Mediator和Command引入系统中。一般Facade的子类定义如下:
public class ApplicationFacade extends Facade implements IFacade{public static const STARTUP:String = "startup";public static function getInstance() : ApplicationFacade {if ( instance == null ) instance = new ApplicationFacade( );return instance as ApplicationFacade;}override protected function initializeController( ) : void{super.initializeController(); registerCommand( STARTUP, StartupCommand );}public function startup( stage:Object ):void{sendNotification( STARTUP, stage );} }
1.定义了ApplicationFacade子类后,就可以通过ApplicationFacade.getInstance().startup( this.stage )来启动系统了。
2.可以通过override方法initializeModel和initializeView方法来引入Proxy和Mediator,但在实践中我们通常是在StartupCommand中进行相关操作。且除了必须要在启动的时候注册的Command比如StartupCommand外,其他的Command最好都不要在这里注册。
三.Proxy, Command,Mediator和Notifier
Notifier是一个引用了facade对象的子类,且封装了facade对象的sendNotification方法。而Proxy, Command和Mediator都继承自Notifier,这使得这两个类都能够发送消息,以使用PureMVC的消息系统。且能够使用facade对象的接口来调用一些方法,比如注册和获取Proxy数据源,注册Mediator中介等。
四.Proxy和Modal
每个Proxy子类都封装了对一种数据的操作,多个子类则封装了多种数据。Modal主要通过维护proxyMap来注册和获取数据源,而Facade也提供了对proxyMap进行操作的接口。Command和Mediator也能随时通过facade来注册或获取需要的数据源。在一个系统中,同一个名称的Proxy只能有一个实例对象。
PureMVC的这一设计,使得数据源可以轻松的被获取,操作,此外,Proxy本身也继承了Notifier的sendNotification方法,当Proxy数据更改时能够通知相关视图,使多个视图能够共用同一数据源。
在实现Proxy时应该注意,Proxy和视图的通信应该仅通过sendNotification方法,Proxy不需要知道视图的状态,不应该对视图产生依赖。
五.Mediator,Observer和View
Mediator是系统和视图之间的中介。View主要通过维护MediatorMap和ObserverMap来支持系统和视图之间的通信。其中ObserverMap保存了一个Notifiction消息和Observer数组之间的对应关系,这是利用观察者模式来实现的消息系统。而MediatorMap则保存了系统中所有的Mediator,当每个Mediator被加入系统中时,系统都会通过listNotificationInterests方法查看该Mediator关注哪些消息,并将Mediator加入相应的观察者中,将其handleNotification方法注册为其关注的消息的处理函数。
在实现Mediator时,主要注意的就是需要重写listNotificationInterests和handleNotification方法,且提供对视图事件的EventListerner。
六.Command和Cotroller
Command主要负责Proxy和Mediator之间的交互,Controller通过commandMap来保存Notification和command之间的关系,在registerCommand的同时,会将Controller加入对应Notifiction消息的观察者中,并使用Command来处理消息。
Command分为SingleCommand和MacroCommand。MacroCommand让你可以顺序执行多个Command。每个执行都会创建一个Command对象并传参一个对源Notification的引用。
MacroCommand在构造方法调用自身的initializeMacroCommand方法。实际应用中,你需重写这个方法,调用addSubCommand添加子Command。你可以任意组合SimpleCommand和MacroCommand成为一个新的Command。
转载于:https://www.cnblogs.com/studynote/archive/2013/06/12/3132194.html
PureMVC框架应用简述相关推荐
- 什么是 PureMVC 框架(提供下载)
PureMVC是在基础的经典模型.视图和控制器上建立的一个轻量级的应用框架,这种开源框架是免费的,它最初是执行的ActionScript 3语言使用的Adobe Flex.Flash和AIR,现在已经 ...
- [Unity]PureMVC框架解读(上)
PureMVC框架解读 简易UI框架 1.UI框架核心方法 BaseUI会记录UI的名字(枚举)和Controller用来将UI与具体操作方法解耦 UIManger利用字典记录所有的UI组件,然后提供 ...
- 解读PureMVC框架
作者:吴秦 出处:http://www.cnblogs.com/skynet/ 本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名吴秦(包含链接). 参考 ...
- LAS语音识别框架发展简述
LAS识别框架发展简述 LAS模型 模型综述 Listener部分 attend-spell learning decoding and rescoring LAS模型的缺点即改进方法 缺点 改进方法 ...
- TestNG框架自动化简述
TestNG框架自动化简述 在做页面自动化测试的时候,有很多语言和框架可以选择,如语言有java,python,php,而框架有各种unittest框架,TestNG框架等等.先前我们介绍过WebDr ...
- PureMVC框架的学习笔记
曾经自己做的项目UI层使用简单的UI框架,发现扩展性不强,大型项目多人协同也是个问题,于是学习了比较经典的基于MVC的PureMVC以及基于MVVM的LoxodonFramework,今天记录一下有关 ...
- Unity PureMVC框架案例
引言 PureMVC框架解读上:https://blog.csdn.net/qq_29579137/article/details/73692842 PureMVC框架解读下:https://blog ...
- QT 版puremvc框架
PDMvcFramework MVC介绍 MVC框架 将应用程序分为Model.View.Controller三个大模块,Model主要负责应用程序的数据持有,View模块负责业务UI展示,Contr ...
- Unity实战(3):pureMVC框架应用
目录 前言 一.下载框架并编译生成dll文件 二.Unity搭建基本要素 三.pureMVC简要说明 四.pureMVC脚本编写 4.1 MyData脚本 4.2 MyDataProxy脚本 4.3 ...
最新文章
- 第一个MapReduce程序
- 在Linux上分析硬件检测日志
- Linux 的启动流程
- mongoDB-3.x启用认证
- 李名洋(1983-),男,中国电信股份有限公司云计算分公司数据分析师。
- python画柱形图把奇数年份也显示出来_python - Matplotlib奇数子图 - 堆栈内存溢出...
- Extjs store用法详解
- java扫码盒_[腾讯 TMQ] JAVA 代码覆盖率工具 JaCoCo-实践篇
- 系统调用服务号 linux 2.6.32
- jsdroid 教程_服装制版教程如何利用紧身胸衣来制作无袖服装417才智服装
- Ae/Pr数字转胶片调色插件 FilmConvert Pro for Mac v2.40破解版
- 解决eNSP“错误代码40”及AR设备启动失败问题
- 蜗牛学院:中国人,努力获得了荣誉却要压抑克制
- PS进阶篇——如何PS软件给衣服换个颜色或图案风格(七)
- VirtualBox虚拟电脑控制台错误,不能为虚拟电脑打开一个新任务
- 自定义导航栏 UINavigationBar
- Python-Python与数据库
- 详解数据仓库建设体系
- 操作系统课程设计--模拟时间片轮转法
- 使用ARIMA进行股票预测