设计模式实战:工厂模式+责任链模式——订单处理流程

java 复制代码
// 1. 定义处理请求的抽象处理器(责任链基础)
abstract class OrderHandler {
    protected OrderHandler nextHandler; // 下一个处理器
    
    public void setNextHandler(OrderHandler nextHandler) {
        this.nextHandler = nextHandler;
    }
    
    abstract void handleRequest(Order order);
}

// 2. 订单实体类
class Order {
    private double amount; // 订单金额
    private String type;   // 订单类型
    
    public Order(double amount, String type) {
        this.amount = amount;
        this.type = type;
    }
    
    public double getAmount() { return amount; }
    public String getType() { return type; }
}

// 3. 具体处理器实现
class PaymentHandler extends OrderHandler {
    @Override
    void handleRequest(Order order) {
        System.out.println("处理支付流程...");
        if (nextHandler != null) {
            nextHandler.handleRequest(order);
        }
    }
}

class InventoryHandler extends OrderHandler {
    @Override
    void handleRequest(Order order) {
        System.out.println("检查库存...");
        if (nextHandler != null) {
            nextHandler.handleRequest(order);
        }
    }
}

class ShippingHandler extends OrderHandler {
    @Override
    void handleRequest(Order order) {
        System.out.println("安排物流配送...");
        if (nextHandler != null) {
            nextHandler.handleRequest(order);
        }
    }
}

// 4. 工厂接口和实现
interface HandlerFactory {
    OrderHandler createHandlerChain();
}

class DefaultHandlerFactory implements HandlerFactory {
    @Override
    public OrderHandler createHandlerChain() {
        // 创建处理器
        OrderHandler payment = new PaymentHandler();
        OrderHandler inventory = new InventoryHandler();
        OrderHandler shipping = new ShippingHandler();
        
        // 构建责任链
        payment.setNextHandler(inventory);
        inventory.setNextHandler(shipping);
        
        return payment; // 返回链头
    }
}

// 5. 测试代码
public class Main {
    public static void main(String[] args) {
        // 使用工厂创建责任链
        HandlerFactory factory = new DefaultHandlerFactory();
        OrderHandler handlerChain = factory.createHandlerChain();
        
        // 创建订单并处理
        Order order = new Order(199.99, "ONLINE");
        handlerChain.handleRequest(order);
    }
}

运行结果:

erlang 复制代码
处理支付流程...
检查库存...
安排物流配送...

代码说明:

  1. 责任链模式

    • OrderHandler 是抽象处理器,定义了链式结构(通过 nextHandler
    • 具体处理器(PaymentHandlerInventoryHandlerShippingHandler)实现具体的处理逻辑
    • 每个处理器可以决定是否将请求传递给下一个处理器
  2. 工厂模式

    • HandlerFactory 接口定义创建责任链的方法
    • DefaultHandlerFactory 实现具体的创建逻辑,负责实例化和组装整个责任链
  3. 结合使用

    • 工厂模式负责创建和管理责任链的构建过程
    • 责任链模式处理实际的业务逻辑流程
    • 这种组合提供了灵活性和可扩展性
相关推荐
..过云雨4 分钟前
13.【Linux系统编程】从ELF格式深入理解动静态库
linux·c语言·c++·后端
用户83562907805110 分钟前
C# 自动化生成 PowerPoint 演示文稿
后端·c#
花生Peadar11 分钟前
AI编程从入门到精通
前端·后端·代码规范
Java水解11 分钟前
【Go】:Sentinel 动态数据源配置指南
后端
zyfts11 分钟前
十分钟搞定Nestjs上传文件到阿里云OSS
后端·node.js
aiopencode17 分钟前
怎么在 Windows 上架 iOS App?跨平台开发者完整实战流程解析
后端
喵个咪22 分钟前
Kratos 下使用 Protobuf FieldMask 完全指南
后端·go
Amos_Web40 分钟前
Rust实战(三):HTTP健康检查引擎 —— 异步Rust与高性能探针
后端·架构·rust
一心只读圣贤猪42 分钟前
Canal ES Adapter pkVal 为 null 问题解决方案
java·后端
掘金者阿豪44 分钟前
用 Rust 构建 Git 提交历史可视化工具
后端