![]() |
1
7
你让你的听众和平常的方式背道而驰——通常情况下,控制者有主动权。它创建视图对象并将自己注册为视图事件的侦听器。 此外,侦听器类型应该是在视图项目中定义的接口。然后,控制器实现该接口,视图不必知道具体的控制器类。循环已解决。当然,您也可以在“反向”设置中执行此操作。 |
![]() |
2
4
类之间的循环依赖本身不是问题(它是一个特性)。 但是,您应该检查您的设计并证明依赖性是正确的。 Eclipse项目可能有点使用过度。不幸的是,Eclipse并不能真正处理多个(10+或更多)项目,而另一个非常优秀的部分编译器会变慢,编译过程可能会变得更麻烦。 在我参与的几个开发项目中,合并和减少项目数量导致了更短的构建时间和更少的构建问题。 在内部应用程序中,无论大小,如果代码的每个人都可以访问所有代码,那么在项目之间划分代码实际上没有什么意义。 如果您担心跟踪依赖关系,那么可以对包之间的依赖关系强制执行规则。 对于大型应用程序中的每个“模块”,拥有一个“业务层”项目、“数据”层项目和一个GUI项目是很常见的,如果不创建人工的“接口项目”等,那么最终必然会产生一些循环依赖项。 在进行大量删除依赖项之前,请考虑这些依赖项实际上是否是真实的,并且项目可能应该合并。 记住,“模块”或“层”这样的抽象概念并不一定意味着你必须有匹配的项目或文件夹(或任何东西)。Eclipse项目是你工作的一组文件,基本上没有。 你可能想看看 the-mythical-business-layer . |
![]() |
3
2
首先,您可能希望使用接口而不是实际的类来相互表示控制器和视图。 这类问题相当普遍,不幸的是,我认为没有真正的好解决方案,因为项目不应该在Eclipse中创建周期(允许在NetBeans中创建周期吗?我觉得很惊讶)。 您能做的最多的就是彼此独立地开发,并使用一个具有系统每个部分所依赖的共享接口的公共项目。在某些设计中可以发挥作用。然后,您可以拥有另一个驱动程序项目,该项目了解这两个部分并执行实际的初始化。 如果您真的想避免这种情况,您可能需要像Spring一样使用依赖注入。 |
![]() |
4
1
您也可以将两个项目之一的.jar文件添加到另一个项目中,而不是使其依赖于项目本身。只要记住在必要时更新jar。 |