Observable Pattern Implementation不调用update方法

时间:2016-02-20 05:04:12

标签: java observer-pattern observable

我正在努力在为作业提供的代码上实现Observable Design模式。我不想要整个答案,但我确实想了解遗漏的内容。我不会复制所有的代码,但是到目前为止我写的相关部分。代码是一个简单的银行GUI,允许我们将存储和检查帐户保存到ArrayList。我的第一步是将其拉出到一个新的对象AccountList中并扩展Observable:

public class AccountList extends Observable {
public List<AAccount> accountList;

public AccountList(List<AAccount> accountList) {
    this.accountList = accountList;
}

public void add(AAccount acc) {
    accountList.add(acc);
    hasChanged();
    notifyObservers();
}
}

我的下一步是实现一个观察者类:

public class AccountListObserver implements Observer{

public AccountListObserver(Observable o) {
    o.addObserver(this);
}

@Override
public void update(Observable o, Object arg) {
    System.out.println("Account " + o + " has been added, " +
            "there are now " + o + " accounts on the server.");

}
}

现在在实际的Server类中,我在开头调用了以下内容:

AccountList accList = new AccountList(new ArrayList<AAccount>());
Observer accObserver = new AccountListObserver(accList);

然后,无论何时添加帐户,我都会调用accList.add(acc)

我没有得到我的输出,但程序运行正常。为了实现这一功能,我错过了哪些内容。一旦我理解了缺少或需要移动/更改的内容,我就可以对所有功能进行必要的更改。我对可能遗漏的内容感到非常困惑,因为它似乎是一种逻辑配置。

1 个答案:

答案 0 :(得分:4)

hasChanged()的来电替换为setChanged()。这会将更改的标志设置为true,并允许notifyObservers()方法通知观察者。