并发组件 | Go设计模式实战

嗯,Go设计模式实战系列,一个设计模式业务真实使用的golang系列。



前言
本系列主要分享,如何在我们的真实业务场景中使用设计模式。

本系列文章主要采用如下结构:

什么是「XX设计模式」?
什么真实业务场景可以使用「XX设计模式」?
怎么用「XX设计模式」?
本文主要介绍「组合模式」结合Go语言天生的并发特性,如何在真实业务场景中使用。

之前文章《代码组件 | Go设计模式实战》已经介绍了「组合模式」的概念,以及在业务中的使用。今天我们结合Go语言天生的并发特性,升级「组合模式」为「并发组合模式」。

我们先来简单回顾下「组合模式」的知识,详细可以查看上篇文章《代码组件 | Go设计模式实战》

什么是「并发组合模式」?
组合模式的概念:

一个具有层级关系的对象由一系列拥有父子关系的对象通过树形结构组成。

并发组合模式的概念:

一个具有层级关系的对象由一系列拥有父子关系的对象通过树形结构组成,子对象即可被串行执行,也可被并发执行

并发组合模式的优势:

原本串行的业务(存在阻塞的部分,比如网络IO等)可以被并发执行,利用多核优势提升性能。
什么真实业务场景可以用「并发组合模式」?
我们还是以「组合模式」中的“订单结算页面”为例,继续来看看某东的订单结算页面:



从页面的展示形式上,可以看出:

页面由多个模块构成,比如:
地址模块:获取用户地址数据
支付方式模块:获取支付方式列表
店铺模块:获取店铺、购物车选中商品等信息
发票模块:获取发票类型列表
优惠券模块:获取用户优惠券列表
某豆模块:获取用户积分信息
礼品卡模块:获取礼品卡列表列表
订单详细金额模块:获取订单金额信息
单个模块可以由多个子模块构成
店铺模块,又由如下模块构成:
商品模块:获取购物车选中商品信息
售后模块:获取商品售后信息
优惠模块:获取商品参与的优惠活动信息
物流模块:获取商品支持的配送方式列表
按照「组合模式」的业务逻辑执行流程:
展开
评论