gpt4 book ai didi

造成循环继承的java观察者

转载 作者:搜寻专家 更新时间:2023-11-01 03:21:21 24 4
gpt4 key购买 nike

假设我有两个类:A有属性(property)A.a , B有属性(property)B.b .

A 中的一些属性取决于 B.b ,但是A.a不依赖于 B.b .

B 中的一些属性取决于 A.a ,但是B.b不依赖于 A.a .

我想要A收到有关 B.b 更改的通知, 和 B收到有关 A.a 更改的通知.如果我使用标准观察者模式:

public class A implements B.Observer {..}

public class B implements A.Observer {..}

我得到一个编译器错误:

cyclic inheritance involving B (or A).

我意识到这通常会导致无限循环,但在这种情况下不会。例如,如果 A.a变化,A会通知B .但是因为 A.aB.b 没有影响,没有返回通知给A并且没有循环。

我很感激 Java试图防止一般问题,但我需要以某种方式实现它。有什么建议吗?

最佳答案

使用 publish-subscribe pattern您的每个类都是发布者和订阅者。

interface Publisher {
void addSubscriber(Subscriber sub);
}

interface Subscriber {
void handle (Object event);
}

class A implements Publisher, Subscriber {...}
class B implements Publisher, Subscriber {...}

如果您不介意使用一些 JavaFX 技术,那么您应该查看 properties and binding这将使您获得类似于您已有的东西,但这次没有编译器错误

关于造成循环继承的java观察者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29924185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com