我的具体问题是我有一个包含另一个类B的A类.B包含一些数字,A包含这些数字的总和。我喜欢做的是当B中的数字发生变化时,它应该让A类知道它更新了它的数字,以便A更新它自己的数字。
举个例子,假设B包含:
number1 = 7; number2 = 5;
所以A包含12个。
现在当我将7改为9时,A应该包含14。
最佳做法是什么?
PS:它不仅仅是关于A包含B,实际上我有D包含C,C包含A而A包含B.答案 0 :(得分:4)
以下是两种选择:
请勿将总数存储在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
}
}
这种方法通常被称为observer pattern。
答案 1 :(得分:1)
1。使用Publisher-Subscriber
模式,通常,称为Observer Pattern
。
2. 也可以通过创建一个轮询变量值的线程来完成,所做的任何更改都将按照您规定的方式处理。