Java设计模式六 - 实际应用与案例分析

1. 案例分析:使用观察者模式实现实时股票价格更新

1.1 详解

在股票交易系统中,经常需要实时更新股票价格,通常情况下我们可以使用观察者模式来实现。股票交易系统是典型的发布-订阅场景,股票价格的变动需要即时通知给相关的观察者。

1.2 示例代码(Java)
import java.util.ArrayList;
import java.util.List;

class Stock {
    private String symbol;
    private double price;
    private List<Observer> observers;

    public Stock(String symbol, double price) {
        this.symbol = symbol;
        this.price = price;
        this.observers = new ArrayList<>();
    }

    public void setPrice(double price) {
        this.price = price;
        notifyObservers();
    }

    public void addObserver(Observer observer) {
        observers.add(observer);
    }

    public void removeObserver(Observer observer) {
        observers.remove(observer);
    }

    private void notifyObservers() {
        for (Observer observer : observers) {
            observer.update(symbol, price);
        }
    }
}

interface Observer {
    void update(String symbol, double price);
}

class StockObserver implements Observer {
    private String name;

    public StockObserver(String name) {
        this.name = name;
    }

    @Override
    public void update(String symbol, double price) {
        System.out.println(name + " - Stock price of " + symbol + " is now: " + price);
    }
}

public class StockMarketExample {
    public static void main(String[] args) {
        Stock stock = new Stock("AAPL", 150.0);

        Observer observer1 = new StockObserver("Observer 1");
        Observer observer2 = new StockObserver("Observer 2");

        stock.addObserver(observer1);
        stock.addObserver(observer2);

        stock.setPrice(155.0);
    }
}

2. 项目案例:电子商务平台订单处理系统

2.1 详解

在电子商务平台中,订单处理系统是核心组件之一。订单处理涉及订单创建、支付、库存管理、配送等多个环节,设计良好的系统可以通过设计模式来提高可维护性、扩展性和性能。

2.2 设计模式应用示例(简化):
工厂模式:用于创建订单对象,根据订单类型不同创建不同类型的订单。
观察者模式:用于实时通知用户订单状态的变化,比如订单支付成功、订单发货等。
策略模式:用于选择不同的支付策略,比如信用卡支付、支付宝支付等。
模板方法模式:用于定义订单处理的流程,例如创建订单的流程可以有多个步骤,模板方法定义了这些步骤的顺序,但具体步骤的实现由子类提供。
享元模式:用于共享订单状态信息,避免重复创建相同的状态对象。

这些设计模式可以让订单处理系统更具扩展性、灵活性和可维护性,使其能够适应不断变化的业务需求。

版权声明: 闲者 发表于 2024-08-09
转载请注明: Java设计模式六 - 实际应用与案例分析 | Java设计模式六 - 实际应用与案例分析 - 无界文档,Java设计模式六 - 实际应用与案例分析

评论区

暂无评论...