image.png
在股票交易系统中,当股票价格发生变化时,系统需要实时通知所有订阅该股票的投资者。这包括发送实时价格更新、交易提醒等。
肖哥弹架构 跟大家“弹弹” 设计模式,需要代码关注
欢迎 点赞,点赞,点赞。
关注公号Solomon肖哥弹架构获取更多精彩内容
2. 为什么要使用观察者设计模式
观察者模式允许对象间的一对多依赖关系,当一个对象改变状态时,所有依赖于它的对象都会得到通知并自动更新。
3. 标准观察者设计模式图
image.png
4. 业务观察者设计模式图
image.png
5. 业务代码参考
// 股票类,作为被观察的主题
class Stock {
private String name;
private double price;
private List<Investor> observers = new ArrayList<>();
public Stock(String name) {
this.name = name;
}
public void setPrice(double newPrice) {
if (newPrice != this.price) {
this.price = newPrice;
notify();
}
}
public void subscribe(Investor investor) {
observers.add(investor);
}
public void unsubscribe(Investor investor) {
observers.remove(investor);
}
public void notify() {
for (Investor observer : observers) {
observer.update(this, price);
}
}
public String getName() {
return name;
}
}
// 投资者类,作为观察者
class Investor {
private String name;
public Investor(String name) {
this.name = name;
}
public void update(Stock stock, double newPrice) {
// 投资者收到股票价格更新的逻辑
System.out.println("Investor " + name + " is notified: " +
"Stock " + stock.getName() + " price updated to " + newPrice);
}
}
// 客户端使用
class StockTradingSystem {
public static void main(String[] args) {
Stock stock = new Stock("Tech Corp");
Investor investor1 = new Investor("lili");
Investor investor2 = new Investor("sasa");
stock.subscribe(investor1);
stock.subscribe(investor2);
// 模拟股票价格更新
stock.setPrice(120.5);
stock.setPrice(130.75);
}
}
6. 使用观察者设计模式的好处
- 解耦:股票价格更新逻辑与通知投资者的逻辑解耦。
- 实时性:投资者可以实时接收到股票价格的更新。
7. 其他使用观察者设计模式场景参考
- 社交媒体:用户发布动态时,通知关注者。
- 消息系统:发送消息时,通知所有在线的接收者。
8. 可参考开源框架
-
Java Observer Pattern Implementation:Java标准库中的
Observer
和Observable
类。
结论
观察者模式是一种适用于创建对象事件通知机制的设计模式,特别适合于实现分布式事件处理系统,如股票交易系统。
历史热点文章
- 外观模式(Facade Pattern):微服务架构中的数据库访问实战案例分析
- 代理模式(Proxy Pattern):权限校验API调用实战案例分析
- 桥接模式(Bridge Pattern):多样式用户界面组件实战案例分析
- 组合模式(Composite Pattern): 在线教育平台课程管理实战案例分析
- 享元模式(Flyweight Pattern):网页游戏中的角色对象管理实战案例分析
- 观察者模式(Observer Pattern):股票交易系统实战案例分析
- 策略模式(Strategy Pattern):电商平台的优惠券系统实战案例分析
- 模板方法模式(Template Method Pattern):视频播放应用实战案例分析
- 命令模式(Command Pattern):网络爬虫任务队列实战案例分析
- 迭代器模式(Iterator Pattern):电商平台商品分类浏览实战案例分析
- 中介者模式(Mediator Pattern):即时通讯软件实战案例分析
- 备忘录模式(Memento Pattern):游戏存档系统实战案例分析
- 状态模式(State Pattern):电商平台订单状态管理实战案例分析
- 责任链模式(Chain of Responsibility Pattern):电商平台的订单审批流程实战案例分析
- 访问者模式(Visitor Pattern):电商平台商品访问统计实战案例分析
- 工厂方法模式(Factory Method Pattern): 电商多种支付实战案例分析
- 抽象工厂模式(Abstract Factory Pattern):多风格桌面应用实战案例分析
- 建造者模式(Builder Pattern): 在线订单系统实战案例分析
- 原型模式(Prototype Pattern): 云服务环境配置实战案例分析
- 适配器模式(Adapter Pattern):第三方支付集成实战案例分析
- 装饰器模式(Decorator Pattern):电商平台商品价格策略实战案例分析
- 单例模式(Singleton Pattern):购物车实战案例分析