【发布时间】:2009-04-19 18:07:02
【问题描述】:
我一直在阅读 Misko Hevery 的 Guide: Writing Testable Code。
我绝对相信依赖注入是提高可测试性的好工具,并在我的代码中大量使用它。但是,在阅读指南“Flaw #1: Constructor does Real Work”的第一部分时,我发现我仍然对您应该如何连接事件侦听器有点模糊。
假设我有一个类,为了正常工作,需要将侦听器附加到通过构造函数依赖注入传入的参数之一。根据指南,构造函数应该只将它的参数分配给成员变量,而不做其他工作。此外,当构造函数完成时,对象应该被完全初始化。但是,在这种情况下,除非需要连接侦听器,否则我不会认为对象已完全初始化。
据我所知,这需要连接构建器或工厂中的所有侦听器,尽管这似乎与对象本身非常分离,并且很容易失去同步。此外(至少在 actionscript 中,我这些天大部分时间都在使用它),这意味着我的事件监听器不能再是私有的,因为工厂/构建器需要看到它们。
处理此问题的最佳方法是什么?我这里还有其他选择吗?
【问题讨论】:
-
监听器对象的生命周期是多少?它们的寿命是否比您的主要对象长?如果它们的生命周期比主对象短,则不应通过构造函数传入。
标签: unit-testing dependency-injection