Apache flex Flex中的静态函数或事件?
我正在使用一个应用程序,该应用程序最初设计为大量使用静态变量和函数对对象进行单例访问。在这个项目中,我一直在利用欧芹来分解一些耦合,我想开始逐步消除静态函数的使用 我将首先解释基本架构,然后提出我的问题 在这个应用程序中存在一个发送/接收HTTP请求的静态实用程序。当组件希望通过HTTP请求数据时,它调用此类中的静态函数:Apache flex Flex中的静态函数或事件?,apache-flex,events,static-methods,Apache Flex,Events,Static Methods,我正在使用一个应用程序,该应用程序最初设计为大量使用静态变量和函数对对象进行单例访问。在这个项目中,我一直在利用欧芹来分解一些耦合,我想开始逐步消除静态函数的使用 我将首先解释基本架构,然后提出我的问题 在这个应用程序中存在一个发送/接收HTTP请求的静态实用程序。当组件希望通过HTTP请求数据时,它调用此类中的静态函数: Utility.fetchUrl(url, parameters, successHandler, errorHandler); 此函数调用跟踪组件中的另一个静态函数,该函
Utility.fetchUrl(url, parameters, successHandler, errorHandler);
此函数调用跟踪组件中的另一个静态函数,该函数监视请求花费的时间、发送的数量等。该调用在实用程序类中看起来非常类似:
public static function fetchUrl( ... ):void {
Tracker.startTracking(url, new Date());
...
Tracker.stopTracking(url, new Date());
}
此应用程序中任何希望发送HTTP请求的组件都必须通过web实用程序类发送HTTP请求。这在这个类和其他组件之间创建了相当多的耦合,这只是存在对静态函数依赖的几个例子中的一个。当我们扩展和重构系统时,这会导致问题:我想使用事件将其解耦
最后,我希望每个组件实例化一个定制事件,该事件被分派到高级框架。从那里,框架本身将把事件转发到正确的位置。换句话说,那些需要执行HTTP请求的组件将发送如下事件:
dispatchEvent(new WebRequestEvent(url, parameters, successHandler, errorHandler));
从那里,Parsley(或其他框架)将确保事件被发送到正确的位置,该位置可以处理功能并执行任何必要的操作。这也将使我能够作为一个跳板,引入一个更加划分的MVC体系结构,其中web请求结果由模型处理,由框架注入到各自的视图中
我想对跟踪功能也这样做
使用基于事件的机制,再加上类似欧芹这样的框架,是否有缺点?坚持使用静态函数/变量并使用单例风格的访问是否更好?若然,原因为何?这会不会在未来造成更多的麻烦呢?因此,请简要回答以下问题:
祝你好运 那么,简短地回答以下问题:
祝你好运 我肯定会使用事件,并为web请求使用命令模式体系结构。触发事件->创建命令对象->执行。命令对象实例将处理请求和结果以及故障事件。这很容易实现,我稍后会写一个完整的答案。我同意Ian的观点,使用某种MVC,其中有一个控制器负责捕获事件并执行相应的命令或命令链是一种很好的方法。不过,我不认为仅仅为了避免使用单例或静态方法就一定会对您有所帮助。此外,我还看到过一些情况,当涉及到Flex模块时,使用MVC框架会让事情变得一团糟,所以如果您计划大量使用模块,一定要做好准备。Cairngorm可以工作,但你最终会得到很多不必要的事件类,幸运的是有人在我的工作中构建了一个内部类,更好。你应该问的真正问题是:“通过更改为事件,我试图解决什么问题?”。您是否在体系结构中遇到了一些限制,或者只是想让代码更干净?statics/singleton没有本质上的错误。@Glenn,我已经回答了这个问题:“这个应用程序中任何想要发送HTTP请求的组件都必须通过web实用程序类来发送。这在这个类和其他组件之间产生了相当多的耦合,这只是其中的一个例子