我一直在阅读Misko Hevery的Guide: Writing Testable Code。谁负责在无初始化依赖注入方案中附加侦听器?
我绝对购买依赖注入作为一个伟大的工具来提高可测试性,并在我的代码中使用它。然而,当阅读指南的第一部分“Flaw #1: Constructor does Real Work”时,我发现我对你如何连接事件监听器仍然有点模糊。
比方说,我有一个类,为了正常工作,需要将侦听器附加到通过构造函数依赖注入传入的参数之一。根据指南,构造函数应该只将它的参数赋值给成员变量,并且不要做其他工作。另外,当构造函数完成时,该对象应该完全初始化。然而,在这种情况下,我不认为该对象被完全初始化,除非它需要监听器被连接。
据我所知,这需要连接构建器或工厂中的所有侦听器,尽管这看起来与对象本身非常脱钩,并且容易失去同步。另外(至少在动作中,我花了大部分时间在这些日子里),这意味着我的事件监听器不再是私有的,因为工厂/构建器需要看到它们。
处理这个问题的最佳方法是什么?我在这里错过了另一个选项吗?
监听器对象的生命周期是什么?他们活得比你的主要对象长吗?如果它们比主对象的生命周期短,则不应通过构造函数传递它们。 – Runcible 2009-05-04 18:45:08