Presentation is loading. Please wait.

Presentation is loading. Please wait.

PureMVC 孙晓申.

Similar presentations


Presentation on theme: "PureMVC 孙晓申."— Presentation transcript:

1 PureMVC 孙晓申

2 MVC MVC并没有明确的定义,从字面上简单的理解为:Model(模型),View(视图)和Controller(控制),简单介绍就是:将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式

3 Model View Controller

4 PureMVC是在基于模型、视图和控制器MVC模式建立的一个轻量级的应用框架,这种开源框架是免费的,它最早出现在ActionScript 3语言使用的Adobe Flex、Flash和AIR世界里,现在已经移植到几乎所有主要的发展平台

5

6 PureMVC框架的目标很明确,即把程序分为低耦合的三层:Model、View和Controller。 
· 在PureMVC实现的经典MVC元设计模式中,这三部分由三个单例模式类管理,分别是Model、View和 Controller。三者合称为核心层或核心角色。  PureMVC中还有另外一个单例模式类——Façade,Façade提供了与核心层通信的唯一接口

7 Controller保存所有Command的映射。Command类是无状态的,只在需要时才被创建。
View View Model Model Facade Facade Controller保存所有Command的映射。Command类是无状态的,只在需要时才被创建。 负责初始化核心层(Model,View和Controller),并能访问它们的Public方法 View保存对Mediator对象的引用 。由Mediator对象来操作具体的视图组件 Model保存对Proxy对象的引用,Proxy负责操作数据模型(Value Object),与远程服务通信存取数据

8 pureMVC通信机制 名字 报体 PUREMVC使用观察者模式,各层之间能以一种松耦合的方式进行通信,并且与平台无关
通信机制Notification 任意AS对象 名字 报体

9 Façade和Proxy只发送Notification
Mediators既可以发送也可以接受Notification Notification被映射到Command Command也可以发送Notification 这是一种“发布/订阅”机制,所有的观察者都可以收到相同的通知

10

11 Facade Controller Model View

12 Facade Façade是Model、View、Controller三者的“经纪人”。实际编写代码时不需要导入这三者的类文件,也不用直接使用它们。Façade类已经在构造方法包含了对核心MVC三者单例的构造。 实际应用程序都有一个Façade子类,这个Façade类对象负责初始化Controller(控制器),建立Command与Notification名之间的映射,并执行一个Command注册所有的Model和View

13 Façade类应当被当成抽象类,永远不被直接实例化。针对具体的应用程序,应具体编写Façade的子类,添加或重写Façade的方法来实现具体的应用
startup方法启动

14 Command Controller注册侦听每一个Notification,当被通知到时,Controller实例化一个与该Notification对应的Command类的对象。最后,将将Notification作为参数传递给execute方法。 Command无状态

15 Command Command要实现Icommand接口
SimpleCommand MacroCommand execute (x:Inotification) initializeMacroCommand (x:Inotification) Command与Mediator和Proxy交互,应避免Mediator和Proxy直接交互

16 Proxy不监听Notification,也永远不会被通知
Proxy封装了数据模型,管理Data Object及对Data Object的访问,不管数据来自哪里,什么类型 Remote Proxy Proxy and Delegate Protection Proxy Virtual Proxy Smart Proxy Proxy不监听Notification,也永远不会被通知

17 Mediator Mediator是视图组件(ViewComponent)与系统其他部分交互的中介器
基于Flash的应用程序中,Mediator侦听ViewComponent来处理用户动作和Component的数据请求(Event)。Mediator通过发送和接收Notification来与程序其他部分通信

18 Mediator 在Mediator实例化时,PureMVC会调用Mediator的listNotificationInterests方法查询其关心的Notification,Mediator则在listNotificationInterests方法中以数据形式返回这些Notification名称,当这些Notification被系统其他部分发出时,Mediator的handleNotification函数会被调用,并传进Notification参数。

19 Mediator 不应让处理Notification的方法负责复杂逻辑。业务逻辑应放在Command中而非在Mediaotr中。

20

21 sendNotification (ApplicationFacade.USER_ADD,userForm.user);

22 Model View Controller facade.registerProxy(new UserProxy())
facade.registerMediator(new UserFormMediator(app.userForm)) facade.registerCommand(ApplicationFacade.USER_ADD,AddUserCommand); View Controller

23 THANKS


Download ppt "PureMVC 孙晓申."

Similar presentations


Ads by Google