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的理解相关推荐

  1. Unity - 对PureMVC的理解和应用

    #Unity - PureMVC的理解和应用 PureMVC顾名思义,比MVC更纯净的MVC架构,相比与MVC它耦合性更低.代码重用性更高,当然缺点也比较明显:事件的传递都要经过拆箱装箱.事件的执行都 ...

  2. PureMVC游戏框架解析 理解其中包含的设计模式

    作者:吴秦 出处:http://www.cnblogs.com/skynet/ 本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名吴秦(包含链接). 参考 ...

  3. PureMVC 游戏框架解析

    作者:吴秦 出处:http://www.cnblogs.com/skynet/ 本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名吴秦(包含链接). 参考 ...

  4. 解读PureMVC框架

    作者:吴秦 出处:http://www.cnblogs.com/skynet/ 本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名吴秦(包含链接). 参考 ...

  5. html+抽奖游戏,九宫格抽奖HTML+JS版

    div{ margin: 100px auto 0px; // 居中 width:500px; height:250px; border:3px solid black; // 边框 } li{ wi ...

  6. java 9宫格抽奖_九宫格抽奖HTML+JS版

    div{ margin: 100px auto 0px; // 居中 width:500px; height:250px; border:3px solid black; // 边框 } li{ wi ...

  7. 关于PureMVC的个人理解与实现

    这是一个工具类可有可无,根据自己实际情况取舍 using UnityEngine; using System.Collections; /// <summary> /// 获取场景中的对象 ...

  8. 有关于as3的puremvc框架实现和理解

    今天学习PureMVC,看了教程,写了Demo,记录并分享学习过程. 教程参考:http://puremvc.org/component/option,com_wrapper/Itemid,183/ ...

  9. 菜鸟学PureMVC记

    最近工作中需要用到FLASH,开发框架中又是以PureMVC为主.MVC是有了解,但是PureMVC这个之前则是从没接触过.那就学呗~~ 说学就学,可是第一步就让我感觉很费事~~(哎~菜鸟当久了).要 ...

最新文章

  1. 2010年5月八达岭野生公园 51CTO老虎围观团强力插入
  2. Quartz 第六课 CronTrigger(官方文档翻译)
  3. mysql5.6.25密码_安装压缩版mysql5.6.25/ 5.7.14
  4. java设计模式初探之装饰者_JAVA设计模式初探之装饰者模式
  5. Android动态图标包制作教程,安卓手机ico图标制作美化图文教程
  6. 简单易懂的 Raft 分布式共识算法讲义
  7. Oracle11g最佳培训高清下载版(王二暖Oracle11g教室\10年经验毫无保留)
  8. 计算机二级C语言冲刺笔记。
  9. 【C语言基础学习笔记】一、初始C语言(总结篇)
  10. C语言基础之排列组合数字
  11. RuntimeError: Sizes of tensors must match except in dimension 1. Got 61 and 60 in dimension 2
  12. 牧码客(卢益贵):专业取名软件——吉名宝
  13. 上云节省 35%计算资源,420 个运维人天:运满满实时计算实践和思考
  14. C语言初阶第二篇:换我心,为你心,始知C语言 从程序调试到全网最详细字符串教学来喽
  15. python秒表_Python 秒表
  16. 为什么说在数字角频率中:π附近的频率分量就是高频分量?
  17. Interger和Int的区别
  18. [运放滤波器]5_滤波器的分类
  19. 我是如何一步一步搞定小区的安防系统
  20. 新员工入职培训感受总结

热门文章

  1. 不了解这12个语法糖,别说你会Java!
  2. TiDB 官方设计文档翻译(一)
  3. maven快照版本和发布版本
  4. IO多路复用:select/poll/epoll
  5. Android 面试 - 动画
  6. 【阿里云 Linux 服务器】购买 Linux 到项目部署过程中遇到的问题,部署 SpringBoot 项目到服务器上,在手机上安装 Android 程序进行测试
  7. 输入年月日 输出该日期是星期几。javascript_快速提升拼音输入法的几个技巧 高手都会用!...
  8. php 主观题判分,司法考试改革后多少分通过,客观题主观题分数怎么算?
  9. 全球海拔最高的国际级数据中心竣工,西藏有了大数据存储中心
  10. easypoi教程_SpringBoot图文教程17—上手就会 RestTemplate 使用指南