flex cairngorm MVC 介紹

 

本系列文檔力求通過簡潔的講解和簡單的例子使開發者能快速地掌握基於CairngormFlex程序的設計過程,在後面的文檔中後臺語言將以JAVA爲例,並介紹筆者在實際開發過程中應用的比較穩定的Flex+J2EE框架,希望能對想學習或應用Cairngorm的開發者提供一定的幫助。

本文檔的目標讀者是這樣的開發者:他至少有點熟悉Flex,開發過一些基於Flex的應用程序,有點熟悉Cairngorm框架或有一些設計模式的基礎,後面的文檔要求讀者最好了解一些JAVA的知識。由於本人還要上班,所以後續文檔可能發佈的有點慢,請讀者見諒。

什麼是Cairngorm呢?Cairngorm從根本上來說是將程序代碼按照邏輯功能(按數據、用戶視圖、以及起控制作用的代碼)分塊的一種方法論。這個方法論被歸納爲MVC,或者說是Model(模型),view(視圖),Control(控制).熟悉struts的網友可結合StrutsMVC模式來理解。

1,Cairngorm6大元素

6大元素包括:VO,view,model,control,commands,business

1.1,ValueObject,也就是Cairngorm六大元素中的VO,它提供數據的“結構”。例如一本書由書名、作者、和價格組成,那麼這個ValueObject(這裏要取名爲BookVO)就包含bookName,bookAuthor,bookPrice等屬性。ValueObjectModelModelLocator提供某些數據的數據“結構”,以便給view綁定。

1.2View(視圖):一個或多個Flex組件(button,panel,comboBox,label等等)組合在一起開成的一個特定的個體,使用modelModelLocator中綁定的數據,並且針對用戶的交互操作(點擊,鼠標滑過,拖拽等)產生的自定義Cairngorm Event.

1.3,modelLocator:裝着所有的與view綁定的變量(包括VO和其它類型數據),當ModelLocator中的變量變化後,view相應顯示的數據也隨之變化,反之ModelLocator中的變量也發生變化。所以只需要操作modelLocator中的變量就能可達到view的不同顯示的目的。

1.4,control(控制):包括FrontController(前端控制器)events(自定義事件),前端控制器監聽不同的events,並且將不同的event映射到不同的Cairngorm Command進行處理,自定義的event可挾帶任何形式的數據帶到command中,從而達到數據傳送的目的。Event 和 command 的對應關係就類似於struts1.2struts-config.xml文件。

1.5Command(命令):處理業務邏輯,主要的處理邏輯都在它的execute方法中,在execute方法中,通過調用Cairngorm Delegates 或者 其它的Commands,甚至什麼都不調用,以達到更新ModelLocator存綁定的變量的目的。如調用了CairngormDelegates,一般用onResult接收CairgormDelegates執行成功時的返回值,用onFault處理CairngormDelegates執行失敗的情況。

1.6,business包括Delegate(代理)Service(服務)Delegate由一個Command創建,它將遠程過程調用(http  service ,web Service,DataService等)實例化並將結果返回給該CommandService定義連接到遠程數據庫的遠程過程調用(Http service,web Service,DataService),總結爲command通過Delegate調用Service.後面的文檔將舉一個通過Delegate調用服務端JavaDataService的例子。

2,Cairngorm的工作流程

  Cairngorm的工作流程可總結爲以下6句話:

2.1,Front Controller Listens for User Gestures
前端控制器監聽用戶的行爲。注意它只是監聽事件並把事件映射到某個Command,並不會進行任何的業務處理。

2.2,Commands Do All the Work

Command幾乎做了所有工作。系統的業務邏輯大部分都集中在Command中,所以我們的主要時間是花在寫Command.

2.3.Delegate Server-Side Business Logic to Business Delegates
把服務器端的業務邏輯委託到 Bussiness Delegates中。因爲很多時候command需要獲得服務器端數據,所以這樣一來它可以直接調用Bussiness Delegates而不用關注如何連接數據的細節,實現了信息隱藏。

2.4.Business Delegate Finds Services with the Service Locator

Command調用Business Delegate 後,Business Delegate 通過Service Locator來找到相應的RPC services,然後執行實現從服務器端取數據。

2.5.Transfer Data as Value Objects
把傳輸過來的數據存儲爲Value Objects。這點大家應該都很熟悉,比如想要查詢一個公告,就必定創建一個公告類,來存儲每一個公告的標題等信息。

2.6.Store State in the Model Locator and Let Model Notify View
Model Locator 保存狀態並且能使Model檢測到View的變化。這樣一來用戶操作就能直接影響Model,比如添加物品到購物車,Model中的購物商品就會自動增加。

 

下圖爲從網上找到的Cairngorm工作流程的圖解,我認爲能很好地說明Cairngorm工作流程,可以說把這個圖理解好了,便已經理解好了Cairngorm的工作流程:

 Cairngorm圖解

 

本文檔中的某些內容難免參考了其它一些文章,如有相似之處,望見諒!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章