我正在尝试在我的 flex 应用程序中使用 parsley 框架。消息系统是我在使用欧芹时看到的最好的功能之一,
但我有一个疑问,
在您的应用程序中使用 Parsley 框架是否意味着,
- 用Parsley 替换所有
addEventListener()
功能?Messaging System
- 无法使用
new newObject();
. 应该使用依赖注入,而不是创建显式对象?
上面的质疑是真的吗?
我正在尝试在我的 flex 应用程序中使用 parsley 框架。消息系统是我在使用欧芹时看到的最好的功能之一,
但我有一个疑问,
在您的应用程序中使用 Parsley 框架是否意味着,
- 用Parsley 替换所有
addEventListener()
功能?Messaging System
- 无法使用
new newObject();
. 应该使用依赖注入,而不是创建显式对象?
上面的质疑是真的吗?
我在无法选择要使用的工具的地方工作,如果让我选择的话,Parsley 是我不会选择的工具之一。如果您考虑能够调试和测试您的项目、封装、模块化设计等 - 不惜一切代价避免使用“微架构框架”:)
Parsley 与 SWIZ、Mate 类似,Cairngorm 和可能其他我没有深入了解的其他产品都依赖于元数据。这增加了很多间接性。这意味着您不能影响甚至调试不仅“在幕后”发生的事情,而且也不能在您自己的代码中发生。您不知道何时以及为何调用该函数,但最重要的是,为什么不调用该函数。“依赖注入”意味着您将无法在“注入”组件上运行单元测试——因为通过“注入”它们,您创建了对项目中所有事物的依赖。
归根结底,您编写了更多代码来服务于框架,您花费了更多数量级的时间来调试和解决框架的怪癖,应用程序获得了很多重量并且运行速度比没有框架时要慢得多. 在您使用该框架一段时间后,代码变成了无法理解的巨大混乱,无法拆分成更小的部分来更新/替换它们。
所以,如果不是很明显:) 不要使用注入,但要使用addEventListener()
.
不。使用 Parsley 并不意味着您必须/应该用 Parsley 的消息传递替换所有事件侦听器。
Parsley 的整个想法是解耦,换句话说,它是关于使您的应用程序的某些部分不与您应用程序的其他部分绑定。
您可以使用 Flex Messaging 解耦,因为 Flex 事件可以转换。但是: 1) Flex 事件在显示列表中移动,这并不总是您想要的 2) Flex 事件依赖于 String,如果您重构或打错字,这可能会很痛苦
因此,您的两个问题的答案是:如果您希望 Parsley 管理这些对象,则仅使用 Parsley 事件和 Parsley 对象。情况并非总是如此。
解耦可能很好,但也可能是一件苦差事。与上一个答案不同。解耦非常适合单元测试。它实际上使它更容易,因为从理论上讲,一切本身就是一个单元,不与其他单元绑定。仅仅因为 Parsley 可以为您注入它们,并不意味着它必须为单元测试而这样做。
实际上,Flex 是围绕 Injection 构建的。自动注射和注射是有区别的。当您将 dataProvider 分配给 List 时,您就是在注入,只是您正在手动进行。Parsley 只是为您提供了一种自动管理注射的方法。
但是,是的,有时您可能想知道为什么没有注入某些东西,但找出原因并不难。
我写了一系列文章来帮助人们开始使用 Parsley,看看 http://artinflex.blogspot.com/2010/09/quick-dive-into-parsley-intro-why.html 它可能有用。