在我的flex应用程序中,我经常使用服务。我需要它们来更新应用程序中的数据,因此请经常调用它们。目前我通过以下方式实现它:
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);
}
为了调用服务,我扩展了基本的Result处理程序类,并使自定义函数处理结果。通常在最新阶段,我将从服务接收的数据绑定到我在主应用程序中定义的全局变量,然后在其他类中使用它。
目前我注意到使用全局变量这是一件非常讨厌的事情,不确定它是否是一个很好的编程风格。 例如,当我试图重构我的代码时,我注意到有时很难理解谁和何时(以及为什么)在那里填充数据。
也许您可以建议一种存储服务调用数据的方法。我无法理解的主要问题是我们不能只创建一个方法,例如getData,并在应用程序的某个地方调用它,因为调用服务和存储数据是不同的事情(因为只在某些事件上接收数据)....
提前致谢。
答案 0 :(得分:1)
有几个Flex框架可以帮助您:
这些框架中的每一个都将帮助您更好地组织模型和服务。看看他们每个人,选择一个你感到舒服的。
答案 1 :(得分:1)
您所询问的是MVC框架的主要目的之一。特别是你在谈论模型或数据接口。如果你不想使用完整的框架,你应该做的是创建2个类。
1)DataObject
2)DataModel
其中“数据”被替换为直观的用户或产品。在DataObject中,您只保留数据的属性,同样,它是唯一假定数据正确的位置。 DataObject虽然只能通过DataModel直接访问。在数据模型中,您可以保留DataObject的所有getter和setter,以及填充DataObject所需的任何远程服务调用。
这只是MVC风格应用程序开发的开始,如果您真的想要转向更灵活,可管理的代码,您应该考虑使用完整的框架。我建议的两个是:
1)Swiz(http://swizframework.org/):一个超级简单的事件驱动框架,真正利用了flex的力量。
2)PureMVC(http://puremvc.org/):一种易于理解的MVC代码结构,强调代码解耦和严格的MVC架构。
我说从这两个中的一个开始,你将成为一个更好的灵活开发人员。
一些很棒的教程:
pureMVC:http://active.tutsplus.com/tutorials/workflow/understanding-the-puremvc-open-source-framework/
答案 2 :(得分:0)
我个人也喜欢Mate。我正在挖掘他们的框架,并且正在为我目前正在进行的一些项目进行改造。