Java中自定义事件的子包

时间:2014-03-27 10:42:47

标签: java events listener packages

让我们假设我将这四个类分为两个包:

Cyclical dependency between packages

我为其事件处理内容创建了包myapp.enginemyapp.engine.events。如您所见,这会在包之间创建循环依赖性。

如何避免这种情况? 换句话说:哪里是保存与事件相关的类的最佳位置?

1 个答案:

答案 0 :(得分:0)

感谢所有评论。现在是时候总结了。我有以下建议的解决方案:

使_retrievedStuff类型为Object

Seelenvirtuose提到。它将打破循环,但随后我们将丢失有关_retrievedStuff类型的信息。

SomeClassStuff移至事件包

Seelenvirtuose再次提到。此解决方案也可以,但仅当SomeClassStuff不依赖于任何myapp.engine类时。否则,周期性的倾向不会消失。

在我的情况下,这不起作用,因为SomeClassStuff严重依赖于myapp.engine包。所以,我不得不选择第三个选项,即......

将特定于事件的类提取到事件包

我在名为EventStuff的myapp.engine.events包中创建了类,其中包含事件处理所需的内容,而不依赖来自myapp.engine的任何类。事件处理之前需要的SomeClassStuff中的任何数据和逻辑现在都在EventStuff

然后,SomeClassEvent将仅依赖于此类,仅此而已。 这是应用解决方案后的类图:

refactored solution

瞧!简单,但有效。