本節將講述Facade,Proxy、Mediator、Command的統一管家。自定義Facade必須繼承Facade,在本示例中自定義Facade名稱爲ApplicationFacade,這個名稱也是pureMVC組織建議的名稱。先看代碼:javascript
- package com.superwulei {
- import com.superwulei.controller.StartupCommand;
-
- import org.puremvc.as3.patterns.facade.Facade;
-
- public class ApplicationFacade extends Facade {
- public static const STARTUP:String = "startup";
- public static const USER_ADD:String = "user_added";
- public static const USER_DELETE:String = "user_delete";
-
- public static function getInstance():ApplicationFacade {
- if (instance == null)
- instance = new ApplicationFacade();
- return instance as ApplicationFacade;
- }
-
- public function startup(app:Object):void {
- sendNotification(STARTUP, app);
- }
-
- override protected function initializeController():void {
- super.initializeController();
- registerCommand(STARTUP, StartupCommand);
- }
- }
- }
ApplicationFacade中使用了單例模式,即整個應用程序中只會存在一個ApplicationFacade的對象。不清楚單例模式的朋友們能夠經過靜態方法getInstance中的代碼思考一下,是否是這樣。方法initializeController被重寫,首先調用父類的initializeController方法,而後註冊StartupCommand命令。還記得在上一章《pureMVC簡單示例及其原理講解——Controller 》中提到的StartupCommand麼?它是一個複合命令,在這裏註冊了這個命令,其餘的包括全部的Proxy、Mediator和AddUserCommand、DeleteUserCommand也會被同時註冊。看一個startup方法,有一個Object類型的參數app,app接受的將是程序運行的類,沒有它程序能夠被加載但沒法執行任何操做(這個方法具體細節本人有待研究,也歡迎廣大朋友告之)。java
主程序啓動文件MyPureMVCdemo.mxml 代碼mvc
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:components="com.superwulei.view.components.*"
- creationComplete="facade.startup(this);">
- <mx:Script>
- <![CDATA[
- import com.superwulei.ApplicationFacade;
- private var facade:ApplicationFacade = ApplicationFacade.getInstance();
- ]]>
- </mx:Script>
-
- <components:UserForm id="userForm" />
- <components:UserList id="userList" />
- </mx:Application>
乾淨多了吧?在應用程序的creationComplete事件中加入facade.startup(this)的調用,其中this就表示的是當前啓動類。這樣一切就會經過facade走了。爲方便各位更好的理解本文,本人已經將本示例上傳,請點擊下方的超級連接下載。app
這樣結束彷佛很不圓滿,我想在聽到一些反饋以後在作小結,這樣能夠畫上一個比較美的句號。ide
本人對於pureMVC的研究僅限於此,懇請各位pureMVC的研究者和使用者批評、指導!this
這裏是DEMO的下載地址spa