zoukankan      html  css  js  c++  java
  • pureMVC简单示例及其原理讲解五(Facade)

    本节将讲述Facade,Proxy、Mediator、Command的统一管家。自定义Facade必须继承Facade,在本示例中自定义Facade名称为ApplicationFacade,这个名称也是pureMVC组织建议的名称。先看代码:

    Applicationfacade代码  收藏代码
    1. package com.superwulei {  
    2.     import com.superwulei.controller.StartupCommand;  
    3.       
    4.     import org.puremvc.as3.patterns.facade.Facade;  
    5.   
    6.     public class ApplicationFacade extends Facade {  
    7.         public static const STARTUP:String      = "startup";  
    8.         public static const USER_ADD:String     = "user_added";  
    9.         public static const USER_DELETE:String  = "user_delete";  
    10.   
    11.         public static function getInstance():ApplicationFacade {  
    12.             if (instance == null)  
    13.                 instance = new ApplicationFacade();  
    14.             return instance as ApplicationFacade;  
    15.         }  
    16.   
    17.         public function startup(app:Object):void {  
    18.             sendNotification(STARTUP, app);  
    19.         }  
    20.   
    21.         override protected function initializeController():void {  
    22.             super.initializeController();  
    23.             registerCommand(STARTUP, StartupCommand);  
    24.         }  
    25.     }  
    26. }  

    ApplicationFacade中使用了单例模式,即整个应用程序中只会存在一个ApplicationFacade的对象。不清楚单例模式的朋友们可以通过静态方法getInstance中的代码思考一下,是不是这样。方法initializeController被重写,首先调用父类的initializeController方法,然后注册StartupCommand命令。还记得在上一章《pureMVC简单示例及其原理讲解——Controller 》中提到的StartupCommand么?它是一个复合命令,在这里注册了这个命令,其他的包括所有的Proxy、Mediator和AddUserCommand、DeleteUserCommand也会被同时注册。看一个startup方法,有一个Object类型的参数app,app接受的将是程序运行的类,没有它程序可以被加载但无法执行任何操作(这个方法具体细节本人有待研究,也欢迎广大朋友告之)。

    主程序启动文件MyPureMVCdemo.mxml 代码

    Mypuremvcdemo.mxml代码  收藏代码
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:components="com.superwulei.view.components.*"  
    3.     creationComplete="facade.startup(this);">  
    4.     <mx:Script>  
    5.         <![CDATA[  
    6.             import com.superwulei.ApplicationFacade;  
    7.             private var facade:ApplicationFacade = ApplicationFacade.getInstance();  
    8.         ]]>  
    9.     </mx:Script>  
    10.       
    11.     <components:UserForm id="userForm" />  
    12.     <components:UserList id="userList" />  
    13. </mx:Application>  

     干净多了吧?在应用程序的creationComplete事件中加入facade.startup(this)的调用,其中this就表示的是当前启动类。这样一切就会通过facade走了。为方便各位更好的理解本文,本人已经将本示例上传,请点击下方的超级链接下载。

    这样结束似乎很不圆满,我想在听到一些反馈之后在做小结,这样可以画上一个比较美的句号。

    本人对于pureMVC的研究仅限于此,恳请各位pureMVC的研究者和使用者批评、指导!

    这里是DEMO的下载地址

  • 相关阅读:
    【分享】使用Vivado,vck190 BIST 测试,遇到错误“IDCODE/SW CHECK: FAILED”,可以忽略。
    公司预算制定/财务信息化/管理层执行
    税款输入不正确 j2
    发票凭证仍然包含信息
    会计暂估
    委托加工\受托加工凭证处理\会计处理
    记录unknown filesystem type ntfs
    c#多进程通讯,今天,它来了
    多线程通信,IPC,进程通信
    go语言跨平台编译
  • 原文地址:https://www.cnblogs.com/fuland/p/3632848.html
Copyright © 2011-2022 走看看