最近在学习PureMVC框架,感觉最权威的还是阅读官方文档,顺便翻译了下全当记笔记了。

PureMVC概览

    这篇文档他讨论PureMVC框架的类和接口,使用UML来阐述它们的角色、职责和协作。

    PureMVC框架有一个非常细小的目标一一就是帮助你把应用程序编码之间的关联分离成明确的三层:模型层,视图层和控制层。

    经典MVC设计模式的实现把应用程序以3个单例的形式呈现。在PureMVC中第四个单例Facade通过一个简单的接口为程序提供了通信便利,简化了开发。

    Model层这里叫Proxy, Proxy提供了API来管理数据模型层(包括远程父物数据查找)。

    View层这里叫Mediator,Mediator模式适配和管理视图组件。(用户接口)

    Controller这里叫Command, Command没有自主权,并且只有当需要时被创建。

    Facade 初始化和缓存Model, View 和 Controller这几个核心组件,并且提供了一个单独的地方来访问它们的公有方法。

    Facade类使得Proxies, Mediators 和Commands 以松耦合的方式来彼此通信,没必要直接的引用或访问框架中的核心。

    当我们为程序创建一个具体的Facade实现时,我们可以容易的与Facade交互,给使用API的开发者以最少的细节来成功的使用框架。

    Model, View, Controller 这三个核心角色分别实现了IModel, IView和IController接口。 Facade实现了IFacade, 以组合方式实现了所有的核心接口。(IModel, IView和IController)

View, Mediators 和View组件。

            View类以单例的方式被实现并且提供了具体的IMediator实例的访问。

    Mediators   帮助我们创建和复用现有的用户接口组件,使得我们不必要关注PureMVC的实现细节。具体的Mediators必须实现IMediator接口,通常以继承的方式来实现。

    视图组件用来显示数据或者接受用户手势。以一个Flash程序为例,它们通常使用事件和暴露一些属性给具体的Mediator来通信、监视和管理。一个Mediator连接这一个视图组件和它的数据并且和以它为代表的系统的剩下部分进行通信。

   当一个具体的Mediator被注册到View的时候,Mediator可以被它感兴趣的Notification查询。Mediator类必须返回它期望被通知的Notifications的数组的名字。

    因为Mediator必须实现IMediator接口,具体的Mediator将有一个handleNotification方法。当Mediator注册到View的时候,一个Observer实例被创建并且注册到这个数组中的每一个Notification.因此,无论什么时候只要有一个Mediator感兴趣的Notification被发送,Mediator的handleNotification方法就会被调用。    
   Mediator框架类实现了INotifier,因此有一个sendNotification方法,这个方法带着参数给一个新的Notification,构建这个Notification并且使用IFacade单例的实例发送它。

    Mediator的保护属性facade初始化来注册IFacade实例,因此Mediator必须在具体的Facade初始化之后被构建。   

未完,待续...

    

    

PureMVC 官方文档翻译(一)的更多相关文章

  1. Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)中一些知识点

    Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Flume官方文档翻译--Flume 1.7.0 User Guide (unr ...

  2. Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)(二)

    Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Logging raw data(记录原始数据) Logging the raw ...

  3. 蓝牙4.0——Android BLE开发官方文档翻译

    ble4.0开发整理资料_百度文库 http://wenku.baidu.com/link?url=ZYix8_obOT37JUQyFv-t9Y0Sv7SPCIfmc5QwjW-aifxA8WJ4iW ...

  4. GreenDao官方文档翻译(上)

    笔记摘要: 上一篇博客简单介绍了SQLite和GreenDao的比较,后来说要详细介绍下GreenDao的使用,这里就贴出本人自己根据官网的文档进行翻译的文章,这里将所有的文档分成上下两部分翻译,只为 ...

  5. Aircrack-ng官方文档翻译[中英对照]---Airdecap-ng

    Aircrack-ng官方文档翻译---Airdecap-ng   Description[简介] With airdecap-ng you can decrypt WEP/WPA/WPA2 capt ...

  6. Aircrack-ng官方文档翻译[中英对照]---Airmon-ng

    Aircrack-ng官方文档翻译---Airmon-ng Description[简介] This script can be used to enable monitor mode on wire ...

  7. Aircrack-ng官方文档翻译[中英对照]---Aireplay-ng

    Aircrack-ng官方文档翻译---Aireplay-ng[90%] Description[简介] Aireplay-ng is used to inject frames. Aireplay- ...

  8. Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET

    OSNIT_百度百科 Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET Salt Stack 官方文档翻译 分类: 自动运维 2013-04-02 11 ...

  9. Retrofit官方文档翻译

    Retrofit官方文档翻译 官方文档网址 http://square.github.io/retrofit/ 介绍 Retrofit 将你的 HTTP API 转换为 Java 接口. public ...

随机推荐

  1. flask + MySQL-python 创建 webapp 应用

    0 - python 用自带的 wgsi 也可以创建 web 服务1)建立 hello.py 内容如下 # hello.pydef application(environ, start_respons ...

  2. WinForm 水晶报表的简单使用

    今天需要做出一个水晶报表, 以前在学校的时候就看过一点点,有些印象, 但没有具体的了解过,今天百度了一下,发现这个东西相当的方便简单. 还很完美. 开发工具是VS2010,水晶报表没有内置.需要自己下 ...

  3. Allegro导入PADS文件

    1.打开要转换的PADS文件,并导出ASC文件 全选.格式选择PowerPCB V5.0 2.打开Allegro软件,导入上面生成的ASC文件 单击Translate即可完成转换,目录切换到输出路径, ...

  4. __x__(21)0907第四天__ css 盒模型 (框模型)

    CSS 处理元素,把每个元素都包含在一个盒子里. 对网页的布局,其实就是对盒子的摆放及设置.  边框border,会使盒子变大: .box{ border: 10px 20px 30px 40px r ...

  5. ubuntu16.04 anaconda的安装和卸载

    第一次安装: 1.直接从官网下载了anaconda安装包,然后bash ...sh安装. 2.过程中主要需要选择安装路径,为了把安装的软件都放在一起,我新建了一个install_software在系统 ...

  6. duilib 新增数据迁移界面

    xml界面配置: <?xml version="1.0" encoding="utf-8"?> <Window caption="0 ...

  7. 关于eclipse的Progress一直跳转的解决方案

    下载eclipse编程,发现了一个问题:执行main方法第二次console打印不出数据,后发现Progress一直跳转,而且非常多进度条在运行,关闭后第一次执行没问题,第二次问题重复出现. 有幸看到 ...

  8. python模拟---注册登陆查看个人信息

    需求:1.模拟注册: 2.模拟登陆: 3.模拟登陆成功显示登陆成功的用户账号: 一.注册 代码如下: def regetist(): ''' :param username: 注册的账号 :param ...

  9. leetcode 单链表相关题目汇总

      leetcode-19-Remove Nth From End of List—移除链表中倒数第n个元素 leetcode-21-Merge Two Sorted Lists—两个已排序链表归并 ...

  10. js数组元素,获得某个元素的最大值。

    var rows=[{项次:1},{项次:2},{项次:3}]; Math.max.apply(Math, rows.map(function (o) { return o.项次 })) //结果:3 ...