最近在学习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. PostgreSQL自学笔记:1 初识 PostgreSQL

    博主教材:李小威.清华大学出版社.<PostgreSQL 9.6 从零开始学> 博主操作系统系统:Windows10 博主PostgreSQL版本:PostgreSQL 9.6 和 Pos ...

  2. Java 中的字符串转为二进制

    /** * 将字符串转为二进制 */ public class StrConversion { public static void main(String args[]) { String str ...

  3. Java try-cath-finally异常

    Java 内置异常类 Java 语言定义了一些异常类在 java.lang 标准包中. 标准运行时异常类的子类是最常见的异常类.由于 java.lang 包是默认加载到所有的 Java 程序的,所以大 ...

  4. [Codeforces Round #433][Codeforces 853C/854E. Boredom]

    题目链接:853C - Boredom/854E - Boredom 题目大意:在\(n\times n\)的方格中,每一行,每一列都恰有一个被标记的方格,称一个矩形为漂亮的当且仅当这个矩形有两个角是 ...

  5. spring boot application.properties 属性详解

    2019年3月21日17:09:59 英文原版: https://docs.spring.io/spring-boot/docs/current/reference/html/common-appli ...

  6. CSS---光标cursor设置、浮动布局与clear的关系

    光标设置 {cursor:auto;}--光标根据需要自动变化. {cursor:crosshair;}--光标变成“+”. {cursor:pointer;}--光标变成手指模式. {cursor: ...

  7. linux CentOS 安装 nginx

    官方网址:http://nginx.org/en/download.html 一.安装基础组件 yum install gcc-c++ yum install pcre yum install pcr ...

  8. Django创建项目基本步骤

    1.新建项目 django-admin startproject cmdb(项目名) 2.启动服务python manage.py runserver 0.0.0.0:8000(表示服务监听在8000 ...

  9. flutter 学习零碎知识点01

    1.Expanded组件 占满可用空间 -----可以到达类似flex布局中  第一列占用大量空间,所以它必须包装在Expanded widget中. 写死的高度改成Expanded自动撑满屏幕如果还 ...

  10. css table之合并单元格

    colspan 是合并列,rowspan是合并行,合并行的时候,比如rowspan="2",它的下一行tr会少一列:合并列的时候 colspan="2",此行的 ...