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;

          }

    }

  • 相关阅读:
    再谈TextField
    IOS-TextField知多少
    leftBarButtonItems
    LeftBarButtonItems,定制导航栏返回按钮
    Apple Mach-O Linker (id) Error "_OBJC_CLASS...错误解决办法 Apple Mach-O Linker (id) Error "_OBJC_CLASS...错误解决办法
    Unrecognized Selector Sent to Instance问题之诱敌深入关门打狗解决办法
    UNRECOGNIZED SELECTOR SENT TO INSTANCE 问题快速定位的方法
    Present ViewController,模态详解
    UILABEL AUTOLAYOUT自动换行 版本区别
    iOS自动布局解决警告Automatic Preferred Max Layout Width is not available on iOS versions prior to 8.0
  • 原文地址:https://www.cnblogs.com/-yan/p/4273285.html
Copyright © 2011-2022 走看看