java观察者导致循环继承

假设我有两个类:A属性A.a,B属性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.a对B.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,这将允许您使用类似于您已有的东西,但这次没有编译器错误

点赞