根据股票实例类图,用Java控制台应用程序实现观察者设计模式
时间: 2024-04-07 19:31:33 浏览: 87
好的,首先我们需要先根据股票实例类图进行代码实现。以下是股票实例的类图:
![股票实例类图](https://img-blog.csdnimg.cn/20210714095004482.png)
根据类图,我们需要创建以下类:
- `Stock`类:表示股票的类,包含股票的名称、价格等属性,以及添加、删除观察者、通知观察者等方法。
- `Observer`接口:表示观察者的接口,包含接收股票信息的方法。
- `User`类:实现了`Observer`接口,表示用户,包含用户的姓名、观察的股票等属性,以及接收股票信息的方法。
以下是代码实现:
```java
import java.util.ArrayList;
import java.util.List;
// 股票类
class Stock {
private String name; // 股票名称
private double price; // 股票价格
private List<Observer> observers; // 观察者列表
public Stock(String name, double price) {
this.name = name;
this.price = price;
observers = new ArrayList<>();
}
// 添加观察者
public void attach(Observer observer) {
observers.add(observer);
}
// 删除观察者
public void detach(Observer observer) {
observers.remove(observer);
}
// 通知观察者
public void notifyObservers() {
for (Observer observer : observers) {
observer.update(this);
}
}
// 获取股票名称
public String getName() {
return name;
}
// 获取股票价格
public double getPrice() {
return price;
}
// 设置股票价格
public void setPrice(double price) {
this.price = price;
notifyObservers(); // 价格变化后通知观察者
}
}
// 观察者接口
interface Observer {
void update(Stock stock);
}
// 用户类,实现了观察者接口
class User implements Observer {
private String name; // 用户姓名
private List<Stock> stocks; // 观察的股票
public User(String name) {
this.name = name;
stocks = new ArrayList<>();
}
// 添加观察的股票
public void addStock(Stock stock) {
stocks.add(stock);
}
// 接收股票信息
public void update(Stock stock) {
System.out.println(name + "收到股票信息:");
System.out.println("股票名称:" + stock.getName() + ",股票价格:" + stock.getPrice());
}
}
// 控制台应用程序
public class ConsoleApp {
public static void main(String[] args) {
// 创建股票实例
Stock stock1 = new Stock("股票1", 10.0);
Stock stock2 = new Stock("股票2", 20.0);
// 创建用户实例
User user1 = new User("用户1");
User user2 = new User("用户2");
// 用户观察股票
user1.addStock(stock1);
user1.addStock(stock2);
user2.addStock(stock1);
// 股票变化,通知观察者
stock1.setPrice(12.0);
stock2.setPrice(22.0);
}
}
```
在上面的代码中,我们首先创建了`Stock`类表示股票,`Observer`接口表示观察者,`User`类表示用户。`User`类实现了`Observer`接口,表示用户可以观察股票。在`Stock`类中,我们使用`ArrayList`来存储观察者列表,并在价格变化时通知观察者。在`User`类中,我们使用`ArrayList`来存储观察的股票,并实现了接收股票信息的方法`update`。
在`main`方法中,我们首先创建了两个股票实例和两个用户实例。然后,用户观察了不同的股票。最后,我们模拟股票价格的变化,通知观察者(即用户)股票价格的变化。
这就是观察者设计模式的Java控制台应用程序实现。
阅读全文