Iteration::two的基于Flex的開源項目-- Cairngorm store的學(xué)習(xí)筆記(二)
Posted on 2006-03-09 17:28 云自無心水自閑 閱讀(2269) 評論(0) 編輯 收藏 所屬分類: Flex 、Cairngorm 、Flex2Iteration::two是一家致力于RIA開發(fā)的公司。 詳情請看:http://www.iterationtwo.com/index.html
Macromedia Acquires iteration::two in creation of Macromedia Consulting Europe.
Macromedia acquires iteration::two, an industry-leading software consultancy, to create a European Rich Internet Application consulting organisation based in Edinburgh , Scotland.
Cairngorm是Iteration::two的開源項目之一。下載和更新地址是http://www.iterationtwo.com/open_source_cairngorm.html
好,現(xiàn)在繼續(xù)開始我的學(xué)習(xí)筆記:
1. 在Control中有Command.as定義了Command接口,筆記一中FrontController中addCommand的調(diào)用添加的Command都必須實現(xiàn)此接口。Command接口只定義一個唯一的需要實現(xiàn)的方法execute(); 這是一個典型的命令模式, 所有后續(xù)的命令都實現(xiàn)此接口, 對外統(tǒng)一提供一個單點入口execute(), 其他的人都可以進行調(diào)用,但不需要了解命令具體的實現(xiàn)方式.
2. 在Model中定義了ModelLocator接口,ModalLocator是所有數(shù)據(jù)綁定的接口,也就是說應(yīng)用中所有需要進行綁定的數(shù)據(jù)都需要通過此接口進行定位。在實際的應(yīng)用中需要實現(xiàn)此接口,并提供所有的綁定數(shù)據(jù)。
3. 在business中定義了兩個類 ServiceLocator和Responder。
ServiceLocator這是偽單例類, 應(yīng)用開發(fā)者用于定義并獲得服務(wù).
之所以是偽單例類, 是因為ServiceLocator是定義在mxml中的,
它需要一個無參數(shù)的Public構(gòu)造函數(shù). 使用中必須定義一個ServiceLocator的子類, 并在其中定義需要的服務(wù).
代碼示例:首先在Services.mxml中進行如下定義:










在Flex主應(yīng)用中添加一行:
<business:Services id="services" />
其中business命名空間在應(yīng)用頭部進行申明
xmlns:business="org.nevis.cairngorm.samples.store.business.*"
ServiceLocator使用方法:
在業(yè)務(wù)代理類(Delegate)中通過如下方式進行調(diào)用:
* var service = ServiceLocator.getInstance().getService( "customerDelegate" );
在View中,定義了兩個類 ViewLocator和ViewHelper
ViewHelper:用于隔離Command命令類和View視圖的具體實現(xiàn).
為了執(zhí)行業(yè)務(wù)功能, Command類需要查詢并更改視圖,
在執(zhí)行業(yè)務(wù)邏輯前, 命令類需要從視圖中獲得用戶輸入的數(shù)據(jù);
業(yè)務(wù)邏輯結(jié)束后又經(jīng)常需要更改視圖, 顯示執(zhí)行結(jié)果.
通過將查詢和更改視圖的操作封裝到單獨ViewHelper類中, 命令類完全不需要了解視圖類的任何信息.
ViewHelper屬于一種特殊的視圖, 當(dāng)ViewHelper創(chuàng)建后, 就被注冊到指定的視圖.
ViewHelper繼承自MXMLObject, 在重寫的初始化函數(shù)(initialized)中, 調(diào)用ViewLocator進行注冊,
并指定unload方法的監(jiān)聽函數(shù)unregister, 在unload時, 調(diào)用unregister, 使用ViewLocator的取消注冊.
ViewLocator是一個單例類, 用于獲取ViewHelper操作視圖.
命令類需要通過ViewHelper的方法來查詢更改視圖, 而ViewLocator即用于讓命令類取得需要的ViewHelper.
命令類不需要知道ViewHelper的名稱, ViewLocator會返回需要的ViewHelper實例.
現(xiàn)在Cairngorm的基礎(chǔ)框架已經(jīng)介紹完畢,將在以后繼續(xù)介紹如何在實際應(yīng)用中使用上面提及的基礎(chǔ)框架。