我的具体问题是我有一个包含另一个 B 类的 A 类。B 包含一些数字,A 包含这些数字的总和。我喜欢做的是当 B 中的数字发生变化时,它应该让 A 类知道它更新了它的数字,以便 A 更新它自己的数字。
举个例子,假设 B 包含:
数字1 = 7; 数字2 = 5;
所以 A 包含 12。
现在,当我将 7 更改为 9 时,A 应该包含 14。
最佳做法是什么?
PS:不仅仅是A包含B,实际上我有D包含C,C包含A,A包含B。
我的具体问题是我有一个包含另一个 B 类的 A 类。B 包含一些数字,A 包含这些数字的总和。我喜欢做的是当 B 中的数字发生变化时,它应该让 A 类知道它更新了它的数字,以便 A 更新它自己的数字。
举个例子,假设 B 包含:
数字1 = 7; 数字2 = 5;
所以 A 包含 12。
现在,当我将 7 更改为 9 时,A 应该包含 14。
最佳做法是什么?
PS:不仅仅是A包含B,实际上我有D包含C,C包含A,A包含B。
这里有两种选择:
不要将总数存储在 中A
,按需计算。
class A {
B b;
...
public int getTotal() {
return b.getNumber1() + b.getNumber2();
}
}
或者,让我们A
成为一个观察者,倾听B
.
class A implements ChangeListener {
B b;
int total = 0;
public A() {
b = new B();
b.addChangeListener(this);
}
@Override
public void stateChanged(ChangeEvent ce) {
// recompute total
}
}
这种方法通常被称为观察者模式。
1.使用Publisher-Subscriber
pattern ,俗称。Observer Pattern
2.也可以通过创建一个线程来轮询变量的值,所做的任何更改都将按照您规定的方式进行处理。