Model Locator的概念已經講過,就是在一個地方儲存程式中所有的值對象( ValueObjects,資料)並共用變數。
也就是說,Model Locator用來集中 管理程式所需要的變數。
下邊把Demo15的ModelLocator.as代碼如下:( 作者增加相應的注釋)
import mx.collections.ArrayCollection;
[Bindable]
public class ModelLocator
{
//定義程式需要的變數,作者建 議讀者把該部分定義放在最下邊,而不是樣本中的上邊,原因就是在於代碼更整 齊(因人而異,僅作者的個人建議,呵呵)
public var photoData:ArrayCollection=new ArrayCollection();
public var purchasedPhotos:ArrayCollection=new ArrayCollection();
//定義ModelLocator的Single Instance,這就是設計模式的單例模式(不明白 的讀者可以看設計模式中的該模式講解)
static private var __instance:ModelLocator=null;
//返回single instance
static public function getInstance():ModelLocator
{
if(__instance == null)
{
__instance=new ModelLocator();
}
return __instance;
}
}
對於ModelLocator的instance和getInstance的代碼編 寫,這部分代碼讀者在寫新的代碼過程中,除非重新定義一個自己的 ModelLocator(基於IModelLocator 介面實現),這部分代碼就這麼寫了,呵呵, 即使是自己定義,其也大同小異。
對於getInstance來說,會判斷程式是 否已經有ModelLocator的執行個體,如果有則讀取,沒有則建立。
而 [Bindable]的特性,使自己定義的變數在任何一個使用定義變數的地方自動更新 ,這也是ModelLocator的共用變數的概念所在。
ValueObject下的 photo.as對象作者就不解釋了,實在沒啥解釋的,呵呵。
下一講就要對 Cairngorm的核心控制流程程進行講解了,也就是bussiness下的各部分和event的 複雜關係,可能讀者剛接觸會覺得很繞,沒關係,呵呵,Step By Step,作者講 解之後,讀者就不會有那種感覺了。
作者很感謝廣大讀者的支援,看見 大家的評價,心裡甚感欣慰,呵呵。
文章來 源:http://wangyisong.javaeye.com/blog/451924