前几天坐车回家,就没有更新内容了,今天上来看看顺便写一下第二篇。
书接前文……
第二步 基础知识
PureMVC中的概念常常让大多数的我们感到羞涩难懂,但是一旦你掌握了基本功以后,你会马上灵活地使用它。PureMVC的架构是使用通知(notification)来执行某些命令,不论他们是在模块(model),视图(view)或者是控制器(controller)里面。这些通知(notification)由名字和一个可选的主体构成。主体参数允许你从视图(view)(例如一个被点击的按钮)发送到一个能够接着将数据传给模块(model)(返回相应的数据)的控制器(controller)。
这个概念是指PureMVC拥有一个非常明确的用于指示源文件如何建立的架构。
- 代理(Proxy)---module
Proxy就是一个模块。这个模块,可能不为人们所知,是一个用于处理所有数据传输的类,例如加载XML数据,存储并发送。不像mediator或command,proxy从不用于监听或处理notification;他们只会发送notification。这就意味着为了command或者mediator获得一些数据,这数据要么通过notification的主体发送回called。要么从façade的proxy的实例中获取。Proxy将他们的数据存储在公共类VO(value objects)里。他们只是一些拥有公共变量使得我们能够通过我们的proxy获取和更新数据的简单类。
- 中介(Mediator)---view
Mediator是用于表示view行为的类。在你的应用程序中你可能拥有很多view,并且所有的view都是DisplayObject类的子类(要不然他们就不能称为view)。Mediator用于将你的view添加到你的base(viewComponent是传给mediator的第一个参数)并且它将处理所有与view相关的输入或输出的notification。这表明mediator是在用户触发view的事件后(如点击按钮)负责你通知你的应用程序或者是负责传递来自于proxy的数据到view中去更新。一个mediator监听和处理notification本身以及当他们突然被请求而不是加载时注册新的mediator到façade。
- 命令(command)---controller
Command其实就是一个controller。虽然它不直接监听notification,但是它却有从façade连到它的notification管道。这意味着一个command需要一个判断语句来使他能够决定接受哪个notification和下一步它该做什么。同样的,command还能够发送notification。它们还能够注册proxy,mediator和更多的command。
希望到此能够给你一个简单的理解PureMVC,为了更直观的看出notification是如何在你的应用程序中传递的,请看PureMVC架构图。
如果你认为学习这些东西很艰巨也没关系,不过你一旦坐下来并希望计划你的程序的时候,你就会很快理解我们将要做什么。
- 我们的基类将会调用facade
- façade类接着会调用start up command
- start up command会注册我们的proxy和application mediator
- proxy将会引用他的value object并等待进一步的notification proxy
- application mediator将会注册progress mediator
- progress mediator会创建progress view然后发送notification用来加载数据
- façade会接收该notification并把它传递给数据command
- data command将会过滤notification并告诉proxy去加载数据
- Proxy 将会通知progress view,正在加载数据(过程将会显示出来),整个过程以及结束时,mediator都会处理
- proxy接着会发送notification,使得mediator去处理
- application mediator将会注册urls view 使得我们可以创建按钮给用户点击
- urls view mediator 会从proxy传递数据给urls view 并添加urls view到舞台
- 用户点击按钮,将会由mediator来处理并发送notification给proxy
- proxy会接着重新加载数据,并将状态传给process view
- proxy将接着重新发送notification给应用application mediator来处理
- application mediator将会告诉urls view mediator隐藏urls view并注册images view
- images view mediator将会根据proxy的数据创建images view
这可能看起来复杂,但它其实只是一个将你的程序函数分解成小块的例子。
未完待续……