假设我有两个类: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 {..}
我收到编译错误:
涉及B(或A)的循环继承。
我意识到这通常会导致无限循环,但在这种情况下它并不存在。例如,如果A.a
发生变化,A
会通知B
。但由于A.a
对B.b
没有影响,因此A
没有返回通知,也没有循环。
我很欣赏Java
试图阻止一般性问题,但我需要以某种方式实现这一点。有什么建议吗?
答案 0 :(得分:2)
使用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,它将允许您使用类似于您已有的东西,但这次没有编译器错误