gpt4 book ai didi

java - 将 Observable/Observer 与两个不同的双变量一起使用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:33:30 25 4
gpt4 key购买 nike

我有一个监控股票市场的类(class)。它包含 2 个值(双倍)每日最高价和每日最低价。我想从另一个类监视这些变量,并在其中任何一个发生变化时采取措施。 (即更改限价单)

所以,我有一个 class LiveOrderBook extends Observable 和两个更新价格的方法:

public void setDailyLow(double price){
low = price;
setChanged();
notifyObservers(low);
}

public void setDailyHigh(double price){
high = price;
setChanged();
notifyObservers(high);
}

我需要观察这些价格变量,所以我制作了一个 class PriceObserver implements Observer。我的计划是在我的 Bid 类中创建 PriceObserver 对象来更改股票市场出价。

我的 PriceObserver 类

private double low;
private double high;

public PriceObserver(){

low = 0;
high = 0;
}

public void update(Observable arg0, Object arg1) {
// TODO Auto-generated method stub
}

我现在如何指定应该更新哪个 double?我无法检查 arg0 == 来自另一个类的变量名,那么这是怎么做到的?

最佳答案

一种简单(且有用)的方法是首先创建可以分派(dispatch)的不同事件类:

public class LowPriceChangedEvent {
private double price;
// Constructor and getter up to you.
}

public class HighPriceChangedEvent {
private double price;
// Constructor and getter up to you.
}

现在您可以在 LiveOrderBook 类中调度这些事件:

public void setDailyLow(double price){
low = price;
setChanged();
notifyObservers(new LowPriceChangedEvent(low));
}

public void setDailyHigh(double price){
high = price;
setChanged();
notifyObservers(new HighPriceChangedEvent(low));
}

您的 PriceObserver 现在可以通过简单的 instanceOf 检查轻松区分事件:

public class PriceObserver implements Observer {
@Override
public void update(Observable o, Object arg) {
if (arg instanceOf LowPriceChangedEvent) {
...
} else if (arg instanceOf HighPriceChangedEvent) {
...
} else {
...
}
}
}

关于java - 将 Observable/Observer 与两个不同的双变量一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48580528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com