zoukankan      html  css  js  c++  java
  • 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;

          }

    }

  • 相关阅读:
    小数据池,bytes
    不会的知识总结:
    nginx低版本不支持pathinfo模式,thinkphp针对此问题的解决办法
    备份了一个nginx的虚拟主机配置文件报错
    centos修改ssh端口
    CentOS安装配置Git服务器(gitosis)
    干货CentOS6.5_Nginx1.40_Php5.57_MySQL5.5.35编译安装全记录
    编译升级php
    php源代码安装常见错误与解决办法分享
    兼容IE,Firefox,Opera等浏览器的添加到收藏夹js代码实现
  • 原文地址:https://www.cnblogs.com/-yan/p/4273285.html
Copyright © 2011-2022 走看看