2009-11-04 30 views
0

在我的Flex應用程序中,我使用了很多服務。我需要他們在應用程序中更新我的數據,所以經常給他們打電話。目前,我實現它的方式如下:AS3:如何組織代碼,以防遠程服務被調用

1)有一個服務提供商(AMFLoader類) 2)和響應處理程序(Responder類)

的代碼看起來是這樣的:

public function AMFLoader(url:String):void 
{ 
    gateway = new NetConnection(); 
    gateway.connect(url); 
} 

public function callAMFLoader(serviceName:String, param:String, resultHandler:AMFResultHandler):void 
{ 
    gateway.addEventListener(IOErrorEvent.IO_ERROR, resultHandler.onIENetError); 
    gateway.addEventListener(NetStatusEvent.NET_STATUS, resultHandler.onNetStatus); 
    responder = new Responder(resultHandler.onSuccess, resultHandler.onFalse); 
    gateway.call(serviceName,responder, param); 

} 

和結果處理類:

public class AMFResultHandler 
{ 
    public function AMFResultHandler() 
    { 
    } 


    public function onSuccess(result:*):void 
    { 
     trace("Result from basic AMF Result handler on success: " + result); 
    } 

要對服務的調用我擴展基本結果處理類和自定義函數來處理重sults。通常在最新階段,我將從服務接收到的數據綁定到我在主應用程序中定義的全局變量,然後在其他類中使用它。

目前我注意到,使用全局變量是一件非常煩人的事情,不知道這是否是一種很好的編程風格。 例如,當我嘗試重構我的代碼時,我注意到有時很難理解誰在什麼時候(以及爲什麼)在那裏填充數據。

也許你可以提出一種存儲服務調用數據的方法。我不明白的主要是我們不能只創建一個方法,例如getData,並在應用程序的某個地方調用它,因爲調用服務和存儲數據是不同的事情(因爲數據只在某些事件中被接收到)......

在此先感謝。

回答

1

你問的是MVC框架的主要目的之一。特別是你談論模型或數據接口。你應該做的,如果你不想完全成熟的框架,是創建2類。

1)數據對象

2)的DataModel

其中 「數據」 被替換的東西等的直觀的用戶或產品。在DataObject中,您只保留數據的屬性,同樣它也是唯一假定數據正確的地方。 DataObject雖然只能通過DataModel直接訪問。在數據模型中,您保留了DataObject的所有getter和setter以及您需要填充DataObject的任何遠程服務調用。

這只是MVC風格應用程序開發的開始,如果您真的想要轉向更靈活,可管理的代碼,您應該考慮使用完整的框架。我建議的兩個是:

1)Swiz(http://swizframework.org/):一個超級簡單的事件驅動框架,真正利用flex的強大功能。

2)PureMVC(http://puremvc.org/):一種易於理解的MVC代碼結構,強調代碼解耦和嚴格的MVC架構。

我說從這兩者中的一個開始,你將成爲一個更好的Flex開發者。


幾個偉大的教程:

Swiz會:http://vimeo.com/7166397

PureMVC的:http://active.tutsplus.com/tutorials/workflow/understanding-the-puremvc-open-source-framework/

+0

潛水在... 所以看到你後:)它希望我會習慣快速使用它 –

1

有幾個的Flex框架,可以幫助你:

每個框架將幫助您更好地組織模型和服務。看看他們每個人,並選擇一個你感到舒服的。

0

我個人比較喜歡伴侶也是如此。我真的在挖掘他們的框架,並且正在爲我目前正在處理的一些項目進行改造。