pureMVC簡單示例及其原理講解五(Facade)

本節將講述Facade,Proxy、Mediator、Command的統一管家。自定義Facade必須繼承Facade,在本示例中自定義Facade名稱爲ApplicationFacade,這個名稱也是pureMVC組織建議的名稱。先看代碼:javascript

 

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接受的將是程序運行的類,沒有它程序能夠被加載但沒法執行任何操做(這個方法具體細節本人有待研究,也歡迎廣大朋友告之)。java

主程序啓動文件MyPureMVCdemo.mxml 代碼mvc

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走了。爲方便各位更好的理解本文,本人已經將本示例上傳,請點擊下方的超級連接下載。app

 

這樣結束彷佛很不圓滿,我想在聽到一些反饋以後在作小結,這樣能夠畫上一個比較美的句號。ide

本人對於pureMVC的研究僅限於此,懇請各位pureMVC的研究者和使用者批評、指導!this

這裏是DEMO的下載地址spa

相關文章
相關標籤/搜索