股票交易中心现上线一支股票“New_Fashion”,用户A,B,C注册并关注了这支股票。当股票价格发生变动的时候,交易中心会推送该股票的变化情况给A,B,C三个用户,请用观察者模式演示该功能。用Java实现
时间: 2024-12-12 20:19:37 浏览: 2
观察者模式是一种设计模式,它允许你定义一系列订阅者,这些订阅者会对某一主题对象(在这里是股票价格)的变化做出响应。在Java中,我们可以使用`java.util.Observer`接口和`java.util.Observable`类来实现这个功能。
首先,创建一个`StockPriceObservable`类作为股票价格的主题:
```java
import java.util.ArrayList;
import java.util.List;
public class StockPriceObservable {
private String stockName = "New_Fashion";
private List<Observer> observers = new ArrayList<>();
public void addObserver(Observer observer) {
observers.add(observer);
}
public void removeObserver(Observer observer) {
observers.remove(observer);
}
public void notifyObservers(float priceChange) {
for (Observer observer : observers) {
observer.update(priceChange);
}
}
// 其他如股票价格更新的方法...
}
```
接着,定义一个`StockPriceObserver`接口:
```java
interface Observer {
void update(float priceChange);
}
```
用户A、B和C可以分别实现这个接口,代表他们对股票价格的兴趣:
```java
class UserA implements Observer {
@Override
public void update(float priceChange) {
System.out.println("User A received the notification: " + stockName + " price changed by " + priceChange);
}
}
class UserB implements Observer {
// 类似UserA的update方法...
}
class UserC implements Observer {
// 类似UserA的update方法...
}
```
现在,当股票价格变化时,`StockPriceObservable`会通知所有已添加的观察者:
```java
public static void main(String[] args) {
StockPriceObservable stock = new StockPriceObservable();
stock.addObserver(new UserA());
stock.addObserver(new UserB());
stock.addObserver(new UserC());
// 假设股票价格上涨
float priceChange = 5.0f;
stock.notifyObservers(priceChange);
}
```
阅读全文