2011年6月17日 星期五

【pureMVC】基礎簡介

pureMVC 是以 MVC 架構為基礎的 Framwork,它並不侷限於應用在 Flex 的開發上

在手機、PHP、微軟基礎的架構下都可以使用它

pureMVC 除了 MVC 的基礎之外還額外新增了 Façade,以下說明這四項分類的要點


一、Façade

● Façade 是 pureMVC 的核心,他以單例模式的方法建構了一個唯一的Façade實例

● 一個 Façade 需要繼承 org.puremvc.as3.patterns.facade.Facade 

● Façade 都會定義整個應用程式會用到的所有事件(Notification)  例如以下:

   public static const USER_LOGIN:String="login"; //使用者登入 事件

● 通常都會覆寫(override) initializeController() function,這裡是用來關聯每個 Notification 所對應到的              
   Command  例如以下

   //註冊  USER_LOGIN Notification
   this.registerCommand(USER_LOGIN, LoginCommand);

以下就來看看跟 Controller 有關的 Command

二、 Controller 

●  Controller 保管所有的 Command,一個 Command 都是由 Notification 所觸發的


●  Command 是無狀態的,只有在前端(Mediator)發出 Notification 時才會建立


●  撰寫 Command 類時,須覆寫 execute (INotification) 這個方法,會傳入一個Notification 
 通常此方法內會調用一或多個 Proxy 來執行業務邏輯


●  透過以下過程取得 Proxy,並執行事務
    var loginProxy:LoginFormProxy = facade.retrieveProxy(LoginFormProxy.NAME) as LoginFormProxy;
    loginProxy.login(account); //執行 "登入的邏輯"


接下來看看跟 Model 有關的 Proxy

三、Model

●  Model 層保管了所有的 Proxy

●  透過 Proxy 來操作應用程式中的 Data Object,並且和遠端的後台進行請求及資料交換等


●  Proxy在處理完事務後通常會發送 相關的Notification 


最後來看與View有關的 Mediator


四、View
●  通常會將 UI 分割出各個 Component,讓每個元件各司其職


●  而每個元件通常都會有一個 Mediator 來負責處理元件的視圖變化等


●  元件會觸發事件(ie.按下登入按鈕),並由 Mediator 來發送相關的 Notification 


●  Mediator 也會關心一些事件(Notification)也可能不會(ie.登入成功或失敗)
    當收到這些事件時,則會對元件做視圖的呈現或變化等


●  覆寫 listNotificationInterests() 方法,表示這個 Mediator 關心的事件(Notification )


●  覆寫 handleNotification(INotification) 方法,以處理收到這些事件的後續動作


以上是我從 pureMVC 最佳實務 整理出來的心得


接下來是 一個教學範例的程式
【pureMVC】教學範例(一)

沒有留言:

張貼留言