java 观察者造成循环继承

java observers causing cyclic inheritance

假设我有两个 类:A 和 属性 A.aB 和 属性 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没有影响,所以没有return通知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,这将使您获得类似于您已有的东西,但这次没有编译器错误