Cairngorm示例--業務邏輯如何管理視圖(II)
Posted on 2006-12-28 00:50 云自無心水自閑 閱讀(714) 評論(0) 編輯 收藏 所屬分類: Flex 、Cairngorm 、Flex2上次介紹了如何在業務邏輯中改變視圖,這次講解一種新方法。我們的股票市場顯示圖將擴展為多股票報價查詢器。我們將看到業務邏輯是怎么調整每個視圖的。而且我們還會接觸到無狀態命令是怎么使得事情變得簡單。
第三次迭代--創建業務邏輯管理多視圖
我們經??梢园l現會有很多個類型一樣的視圖,其背后的功能也非常類似。每個視圖顯示一個Model對象。這些視圖可以在開始時從管理對象處請求一個Model對象。比如:我們的StockMarketDashboard.mxml可以進行這樣的添加:












注意:視圖需要傳遞一些唯一的標識,我們將這些標識添加到StockQuote類。














管理對象StockQuoteManager,在ModelLocator實例中初始化。但是StockQuoteManager會是一個怎樣的對象呢?
通常我使用Hashmap來實現,其鍵值就是視圖中的唯一標識符。在構造函數中我們可以初始化這個Hashmap,Flex2中我們使用flash.utils.Dictionary






getStockQuote方法返回一個stockQuote對象














StockMarketPod.mxml幾乎沒有什么改動。只需要將那個唯一的標識符發送給命令,因為命令需要從管理對象處取得StockQuote對象。所以GetStockQuoteEvent類多了一個quoteId屬性。
在GetStockQuoteCommand中,需要將唯一標識符保存在一個成員變量中

































注意一下,在上面的代碼中我們使用的是無狀態命令,在Cairngorm的說明中,無狀態命令是每次Cairngorm事件的響應都創建一個新的命令實例的方式。因此,在這種方式中我們可以放心地把變量存儲在成員變量中,而不用擔心被其他人改變。