重构实践之责任链模式

最近在开发过程中需要修改这样一段代码:

InvoiceSubmitter invoiceSubmitter;
if (是图书业务) {
    if (是增值税专用发票) {
        invoiceSubmitter = rjVatInvoiceSubmitter;
    } else {
        invoiceSubmitter = rjGeneralInvoiceSubmitter;
    }
} else {
    invoiceSubmitter = commonInvoiceSubmitter;
}
invoiceSubmitter.submitRequisition(order);

类图:

OrderFinishSupport直接关联InvoiceSubmitter接口,AbstractInvoiceSubmitter实现InvoiceSubmitter接口submitRequisition方法封装通用逻辑,并定义另外一个重载的submitRequisition方法供子类实现具体业务逻辑。

这是一段发票提交的逻辑,在我们系统的订单完成之后,需要根据用户提交的发票内容调用不同的接口将发票信息提交到发票系统,发票系统来完成为用户开具发票的工作。

This chapter requires login to view full content. You are viewing a preview.

Login to View Full Content

Course Curriculum

3

框架与 I/O:Spring、Netty 与 Web 容器

理解 Spring Boot 自动装配、AOP 与事务原理,掌握 Netty Reactor 模型及 Tomcat 连接处理机制,构建高内聚、易扩展的应用服务层。
4

高性能中间件:消息、缓存与存储

熟练运用 MySQL 索引/事务、Redis 缓存策略、Kafka/RocketMQ 消息可靠性,以及 ZooKeeper 分布式协调,搭建稳定、解耦的分布式数据底座。
6

云原生:容器化、可观测性与工程效能

通过 Docker/K8s 实现弹性部署,集成 Metrics/Logs/Traces 构建可观测体系,推动 DevOps 与自动化,让架构在云上持续交付与进化。