0

我的具体问题是我有一个包含另一个 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。

4

2 回答 2

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
        }
    }
    

    这种方法通常被称为观察者模式

于 2012-07-29T14:40:52.593 回答
1

1.使用Publisher-Subscriberpattern ,俗称Observer Pattern

2.也可以通过创建一个线程来轮询变量的值,所做的任何更改都将按照您规定的方式进行处理。

于 2012-07-29T14:44:52.483 回答