PureMVC 框架总结收录

PureMVC框架的目标很明确,就是把程序分为低耦合的三层:ModelViewController

通过使用PureMVC后,我们的代码将集中分为以下几个部分:FaçadeCommandMediatorProxy以及UI部分,还有一些数据结构的定义如Value Object,所有核心的逻辑都在CommandMediatorProxy中。

1.      Façade:

管理着ControllerModelView,并且通过他们建立起NotificationCommand以及NotificationMediator之间的消息映射。

其中ControllerModelView都是在框架中实现,对用户来讲是不可见的。

一般一个Application都有一个Façade子类,并在系统初始化的时候进行Façade的初始化。

3个比较重要的Protected初始化函数:

initializeController() – 初始化NotificationCommand之间的映射

            registerCommand(LOGIN, LoginCommand);

initializeModel() – 初始化Model层,主要是Proxy的注册

            registerProxy(new SearchProxy());

initializeView() – 初始化View层,主要是Mediator,并Mediator指定具体的Notification Body,通常就是具体的UI view

            registerMediator(new ApplicationMediator());

通常ProxyMediator都是在收到具体Notification后第一次调用的时候进行注册,特别是Mediator,它需要一个对UI view的具体引用,在façade中无法得到

2.      Command

一般处理系统主要的Business Logic。通过Façade中的Controller注册并侦听每个Notification,当收到某个Notifiaction后,Controller会实例化一个Notification对应的Command类对象,然后调用Commandexecute()方法并将Notification作为参数传递给它。

Command包括两种SimpleCommandMacroCommand,实际上MacroCommand就比SimpleCommand多维护一个subCommands数组,在调用MacroCommandexecute方法是,会遍历该数组并按顺序调用每个commandexecute方法

Command里可能会处理以下逻辑:

A.     注册或删除MediatorProxy以及其他Command

B.     发送Notification通知其他Command或者Mediator做出响应

C.     获取ProxyMediator对象,直接操作它们

3.      Mediator

Mediator是界面UI部分和系统其他部分交互的中介。它的主要职责是处理UI和其他Mediator或者Command发出的Notification

Mediator通过2种方式监听着系统发出的消息

  1. 普通的addEventListener(eventName, onHandler)
  2. 定义感兴趣的Notification和收到Notification后的处理函数

如下代码:

override public function listNotificationInterests():Array{

      return [

            ApplicationFacade.MY_CLICK

      ];

}

           

override public function handleNotification(notification:INotification):void{

      switch(notification.getName())

      {

            case ApplicationFacade.MY_CLICK:

                  myView.text.text = notification.getBody() as String; 

                  break;

      }

}

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。