【发布时间】:2020-07-02 10:17:14
【问题描述】:
首先,不确定这里的主题标题。抱歉,如果它与我的要求不符。
我的情况是,我有一些想法,但我不知道其中一个是否比另一个更好,也许我错过了一些东西。事情是这样的:
目前我有一个实例 A 创建另一个类 B 的实例,并使用实例 B 的回调(通过由类 A 实现的回调类),并使用此回调通知类 C 的另一个实例,也在 A 类和私有内部创建。这是一个摘要图:
现在,将来由于某种原因,它是 D 类的另一个对象,它需要创建并保留 B 类的对象。问题是当我有回调时仍然需要通知对象 C来自 B 对象。当然,C 实例不能从 A 移动到 D。所以,从 D 开始,我没有 A 实例,也没有 B 实例,而且我不知道最好的方法。这是 D 类的另一个图表:
这与第一张图基本相同,只是最后一次调用 (notifySomething()) 是假设的,因为我无法从 D 类访问 C 实例。
有人遇到过这种情况吗?最好的解决方法是什么?
谢谢!
【问题讨论】:
-
A 和 D 的最大区别是什么?因为您可以简单地对 A 进行 D 扩展并将
registerListener和notifySomething函数更改为protected。这样,D 也可以从 A 访问变量和方法,以通知 C。我可能在这里没有正确理解,但这就是我会做的。 -
为什么不在两者之间使用一个对象?管理与 B&C 的通信并充当 A|D 的代表的对象...
-
@Nicolas,A 和 D 有完全不同的任务,因此 D 扩展 A 是不合逻辑的
-
@Jean-BaptisteYunès,我想过,但我真的不知道如何在我的情况下实施它(我试图成为我的问题中最普遍的,但该项目实际上非常具体. 谢谢)
-
我认为 jaco0646 的答案在这种情况下是最好的。
标签: java algorithm performance oop security