• 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;

          }

    }

  • 相关阅读:
    自己写的SqlHelper
    宿叶网思路
    phpMyAdmin教程 之 创建新用户/导入/导出数据库
    什么是主机空间?干什么用?
    转 sql注入
    xUtils
    仿360状态,类流量监控桌面浮动显示
    在Yii Framework中利用PHPMailer发送邮件(2011-06-02 14:06:23)
    MD5类库(hex_md5)
    MYSQL的随机查询的实现方法
  • 原文地址:https://www.cnblogs.com/-yan/p/4273285.html
Copyright © 2020-2023  润新知