【发布时间】:2012-06-26 18:55:35
【问题描述】:
举一个非常简单的例子:
Class A {
B b = new B();
}
Class B {
//unicorns and what-not
//Something happens and I want to let A know
//Yet I don't want to return and exit
}
有没有什么方法可以让 B 在没有 Sockets 的情况下与 A 通信? 通过通信,我的意思是 B 向 A 发送值而不需要 A 在 B 上调用方法。
编辑:感谢您的回复。以下是我的后续问题:
如果我有以下情况,并且方法 signal() 被 B 的 2 个实例同时调用,这将导致每个 B 调用动作发生冲突两次。我能做些什么来解决它?
//Modified from Jon Skeet
public class A {
private B b[];
public A() {
//for loop
b[i] = new B(this);
}
public void signal() {
//for loop
b[i].action();
}
}
public class B {
A creator;
public B(A creator) {
this.creator = creator;
}
public void action() {
//stuff
}
public void main(String[] args) {
while(true)
if(something==true) {
creator.signal();
}
}
}
【问题讨论】:
-
为什么不把
A的引用传给B的构造函数,然后对这个引用进行操作呢? -
您要求的是 Observer 模式的简单示例。尽管人们已经给出了很好的答案,但知道这一点可能具有教育价值。
标签: java object communication instance