PureMVC 官方文档翻译(一)
最近在学习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 官方文档翻译(一)的更多相关文章
- 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 ...
- Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)(二)
Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Logging raw data(记录原始数据) Logging the raw ...
- 蓝牙4.0——Android BLE开发官方文档翻译
ble4.0开发整理资料_百度文库 http://wenku.baidu.com/link?url=ZYix8_obOT37JUQyFv-t9Y0Sv7SPCIfmc5QwjW-aifxA8WJ4iW ...
- GreenDao官方文档翻译(上)
笔记摘要: 上一篇博客简单介绍了SQLite和GreenDao的比较,后来说要详细介绍下GreenDao的使用,这里就贴出本人自己根据官网的文档进行翻译的文章,这里将所有的文档分成上下两部分翻译,只为 ...
- Aircrack-ng官方文档翻译[中英对照]---Airdecap-ng
Aircrack-ng官方文档翻译---Airdecap-ng Description[简介] With airdecap-ng you can decrypt WEP/WPA/WPA2 capt ...
- Aircrack-ng官方文档翻译[中英对照]---Airmon-ng
Aircrack-ng官方文档翻译---Airmon-ng Description[简介] This script can be used to enable monitor mode on wire ...
- Aircrack-ng官方文档翻译[中英对照]---Aireplay-ng
Aircrack-ng官方文档翻译---Aireplay-ng[90%] Description[简介] Aireplay-ng is used to inject frames. Aireplay- ...
- Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET
OSNIT_百度百科 Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET Salt Stack 官方文档翻译 分类: 自动运维 2013-04-02 11 ...
- Retrofit官方文档翻译
Retrofit官方文档翻译 官方文档网址 http://square.github.io/retrofit/ 介绍 Retrofit 将你的 HTTP API 转换为 Java 接口. public ...
随机推荐
- 基于for循环的呼吸灯
#include "stm32f10x.h" #include "stm32f10x_gpio.h" //#include "led.h" ...
- 两个排序链表的合并(Easy)
问题来源:选自leetcode 21:合并两个有序链表 问题描述: 题目给定信息: 给定两个有序链表,把两个链表合并成一个链表,并且合并后的链表依然是有序的.这两个链表中允许有重复元素 问题分析: 设 ...
- [LeetCode] Card Flipping Game 翻卡片游戏
On a table are N cards, with a positive integer printed on the front and back of each card (possibly ...
- Java 初始化、final、清理
1 为什么需要无参构造器? 第一个是继承需要 super 调用父类的构造器(父类构造器必须存在且不为 private.可以是无参/默认构造器,也可以是有参构造器),特别的如果父类不包含无参构造器的话, ...
- Bypass 360主机卫士SQL注入防御(附tamper脚本)
0x01 前言 在测试过程中,经常会遇到一些主机防护软件,对这方面做了一些尝试,可成功bypass了GET和POST的注入防御,分享一下姿势. 0x02 环境搭建 Windows Server 200 ...
- 一般处理程序(ashx)的使用
ASP.NET 中发送请求的页面代码如下: <head runat="server"> <title></title> <script s ...
- 解析数学表达式 代码解析AST语法树
2019年2月20日09:18:22 AST语法树自己写代码解析的话就比较麻烦,有现成的库可以解析PHP,就像webpack就是自己解析js的语法代码,编译成各种版本的可用代码 github http ...
- VSCode打开多个项目文件夹的解决方法
最近从sublime转vscode,自然而然就会把sublime的一些习惯带过来,其中有一点让人头疼的是: 当把一个文件夹拖进vscode里面的时候,会把原来的文件夹覆盖掉,这就意味着不能同时在vsc ...
- oo第三次总结
一.(1)规格化设计的大致发展历史 20世纪60年代,随着大容量.高速度的计算机出现,以及大量语言的新增和软件的不可靠,爆发了所谓的“软件危机”.而针对这个问题,人们提出了规格化设计的解决方法.通过把 ...
- TCP断开那些事
继上一篇后,我们再来看一下四次挥手的过程 这里其实没有必要过多阐述,一张图胜过千言万语. 与三次握手一样,四次挥手的过程中也有许多扩展问题. 当然问的最多的还是:为什么要四次握手?为什么要等待2MSL ...