根据股票实例类图,用Java控制台应用程序实现观察者设计模式。
时间: 2024-03-11 12:51:13 浏览: 178
好的,根据股票实例类图,以下是一个简单的Java控制台应用程序实现观察者设计模式:
```java
import java.util.ArrayList;
import java.util.List;
// 股票类(被观察者)
class Stock {
private String symbol;
private double price;
private List<StockObserver> observers = new ArrayList<>();
public Stock(String symbol, double price) {
this.symbol = symbol;
this.price = price;
}
public void attach(StockObserver observer) {
observers.add(observer);
}
public void detach(StockObserver observer) {
observers.remove(observer);
}
public void setPrice(double price) {
this.price = price;
notifyObservers();
}
private void notifyObservers() {
for (StockObserver observer : observers) {
observer.update(this);
}
}
public String getSymbol() {
return symbol;
}
public double getPrice() {
return price;
}
}
// 观察者接口
interface StockObserver {
void update(Stock stock);
}
// 折线图观察者
class LineChartObserver implements StockObserver {
@Override
public void update(Stock stock) {
// 绘制折线图
System.out.println("绘制折线图," + stock.getSymbol() + "股票价格:" + stock.getPrice());
}
}
// K线图观察者
class KLineChartObserver implements StockObserver {
@Override
public void update(Stock stock) {
// 绘制K线图
System.out.println("绘制K线图," + stock.getSymbol() + "股票价格:" + stock.getPrice());
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
Stock stock = new Stock("AAPL", 100.0);
StockObserver lineChartObserver = new LineChartObserver();
StockObserver kLineChartObserver = new KLineChartObserver();
stock.attach(lineChartObserver);
stock.attach(kLineChartObserver);
stock.setPrice(110.0);
stock.detach(lineChartObserver);
stock.setPrice(120.0);
}
}
```
在上面的示例代码中,Stock 是被观察者,StockObserver 是观察者接口,LineChartObserver 和 KLineChartObserver 是具体的观察者实现类。当股票价格发生变化时,Stock 会通知所有观察者,并调用它们的 update 方法,观察者根据股票价格更新折线图和K线图。
这是一个简单的示例代码,实际应用中可能会更加复杂,但是观察者模式可以很好地解耦被观察者和观察者,提高系统的灵活性和可扩展性。
阅读全文