关于Puremvc的理解
PureMVC框架的目标很明确,即把程序分为低耦合的三层:Model、View和Controller。它们合称为PureMVC框架的核心,由Facade统一管理。关于它的核心层,我们不需要管太多,只需要记得下面几点就可以了:
一、Model保存对Proxy对象的引用,Proxy负责操作数据模型,与远程服务通信存取数据。
二、View保存对Mediator对象的引用。由Mediator对象来操作具体的视图组件(View Component,例如Flex的DataGrid组件),包括:添加事件监听器,发送或接收Notification ,直接改变视图组件的状态。
三、Controller保存所有Command的映射。Command可以获取Proxy对象并与之交互,通过发送Notification来执行其他的Command。
上面的什么对什么的引用,可以一开始看的时候很难理解,我们暂时不用管它谁对谁的引用的。这些已经由框架为我们管理好了,我们要所要做的是编写具体的Command,Mediator,Proxy。
一、Proxy是负责操作数据模型的,什么是数据模型?数据模型就是数据库,XML等等。我们可以直观地理解为,Proxy是用来 对数据模型进行查询、插入、更新、删除等操作的类。操作完成后,它就会发送Notification,也就是通知,告诉其它两个层我已经完成工作了。
二、Mediator负责操作具体的视图组件,包括:添加事件监听器,发送或接收Notification ,直接改变视图组件的状态。好像抽象了点。具体的说吧,Mediator是负责管理用户界面,与用户进行交互操作的。如:给Button添加事件,当用户 点击按钮时,发送Notification,告诉Controler我们执行什么样的操作。比如这是一个登录的按钮,那么Mediator就会告诉发送通 知给Controler,告诉它要执行登录操作。此外,Mediator还负责直接改变视图的状态。就像,我点击了登录按钮后,Mediator就改变 它,让登录按钮不过用,避免重复操作。它还可以在视图上显示一条信息,告诉我正在执行登录操作。总的来说,Mediator是用来管理视图的。
三、Command可以获取Proxy对象并与之交互,通过发送Notification来执行其他的Command。再拿上面的 登录例子作解释,当点击了登录按钮后,Mediator就会告诉Controler要执行相应的Command了,比如LoginComand。既然是登 录,那么还得要知道用户的信息才行。Command就会发送Notification告知Proxy,我需要某个用户的信息。那么Proxy就会访问数据 库(也可以是别的数据模型),查询对应的用户信息,然后发送Notification通知Command我已经查询好了,差把信息返回给Command进 行验证,与些同时,Mediator也可以接收Proxy发送的Notification,通过视图告诉用户正在验证信息。Command验证了用户信息 后,发送Notification把验证结果返回给Mediatory,告诉用户验证的结果。或者,Command也可以发送Notification执 行其它的Command操作,比如验证通过后,读取用户的详细资料。
上面的Command,Mediator,Proxy的具体实现类都是要自己编写的,工作量还是比较大的。
PureMVC框架的原理大概就是这样子,写得不足的地方还请各位大虾多多指点。
转载于:https://www.cnblogs.com/zack/archive/2009/05/15/1457626.html
关于Puremvc的理解相关推荐
- Unity - 对PureMVC的理解和应用
#Unity - PureMVC的理解和应用 PureMVC顾名思义,比MVC更纯净的MVC架构,相比与MVC它耦合性更低.代码重用性更高,当然缺点也比较明显:事件的传递都要经过拆箱装箱.事件的执行都 ...
- PureMVC游戏框架解析 理解其中包含的设计模式
作者:吴秦 出处:http://www.cnblogs.com/skynet/ 本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名吴秦(包含链接). 参考 ...
- PureMVC 游戏框架解析
作者:吴秦 出处:http://www.cnblogs.com/skynet/ 本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名吴秦(包含链接). 参考 ...
- 解读PureMVC框架
作者:吴秦 出处:http://www.cnblogs.com/skynet/ 本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名吴秦(包含链接). 参考 ...
- html+抽奖游戏,九宫格抽奖HTML+JS版
div{ margin: 100px auto 0px; // 居中 width:500px; height:250px; border:3px solid black; // 边框 } li{ wi ...
- java 9宫格抽奖_九宫格抽奖HTML+JS版
div{ margin: 100px auto 0px; // 居中 width:500px; height:250px; border:3px solid black; // 边框 } li{ wi ...
- 关于PureMVC的个人理解与实现
这是一个工具类可有可无,根据自己实际情况取舍 using UnityEngine; using System.Collections; /// <summary> /// 获取场景中的对象 ...
- 有关于as3的puremvc框架实现和理解
今天学习PureMVC,看了教程,写了Demo,记录并分享学习过程. 教程参考:http://puremvc.org/component/option,com_wrapper/Itemid,183/ ...
- 菜鸟学PureMVC记
最近工作中需要用到FLASH,开发框架中又是以PureMVC为主.MVC是有了解,但是PureMVC这个之前则是从没接触过.那就学呗~~ 说学就学,可是第一步就让我感觉很费事~~(哎~菜鸟当久了).要 ...
最新文章
- 2010年5月八达岭野生公园 51CTO老虎围观团强力插入
- Quartz 第六课 CronTrigger(官方文档翻译)
- mysql5.6.25密码_安装压缩版mysql5.6.25/ 5.7.14
- java设计模式初探之装饰者_JAVA设计模式初探之装饰者模式
- Android动态图标包制作教程,安卓手机ico图标制作美化图文教程
- 简单易懂的 Raft 分布式共识算法讲义
- Oracle11g最佳培训高清下载版(王二暖Oracle11g教室\10年经验毫无保留)
- 计算机二级C语言冲刺笔记。
- 【C语言基础学习笔记】一、初始C语言(总结篇)
- C语言基础之排列组合数字
- RuntimeError: Sizes of tensors must match except in dimension 1. Got 61 and 60 in dimension 2
- 牧码客(卢益贵):专业取名软件——吉名宝
- 上云节省 35%计算资源,420 个运维人天:运满满实时计算实践和思考
- C语言初阶第二篇:换我心,为你心,始知C语言 从程序调试到全网最详细字符串教学来喽
- python秒表_Python 秒表
- 为什么说在数字角频率中:π附近的频率分量就是高频分量?
- Interger和Int的区别
- [运放滤波器]5_滤波器的分类
- 我是如何一步一步搞定小区的安防系统
- 新员工入职培训感受总结
热门文章
- 不了解这12个语法糖,别说你会Java!
- TiDB 官方设计文档翻译(一)
- maven快照版本和发布版本
- IO多路复用:select/poll/epoll
- Android 面试 - 动画
- 【阿里云 Linux 服务器】购买 Linux 到项目部署过程中遇到的问题,部署 SpringBoot 项目到服务器上,在手机上安装 Android 程序进行测试
- 输入年月日 输出该日期是星期几。javascript_快速提升拼音输入法的几个技巧 高手都会用!...
- php 主观题判分,司法考试改革后多少分通过,客观题主观题分数怎么算?
- 全球海拔最高的国际级数据中心竣工,西藏有了大数据存储中心
- easypoi教程_SpringBoot图文教程17—上手就会 RestTemplate 使用指南