云计算百科
云计算领域专业知识百科平台

大白话说Java设计模式-49-综合实战中:营销全链路设计模式应用

📌 PDF:AI人工智能 — 大模型微调与部署实战项目

大白话说Java设计模式-49-综合实战中:营销全链路设计模式应用

📌 一句话本质:营销全链路是设计模式的"高级战场",5 大模式解决规则动态化、计算性能、灵活扩展。

🏷️ 标签:综合实战 / 营销全链路 / 设计模式协作 / 大白商城   🎯 适合:所有 Java 工程师


目录

  • 一、营销全链路流程图
  • 二、5 大设计模式协作
  • 三、完整代码实战
  • 四、模式协作关系
  • 五、性能优化总结
  • 六、本篇小结 + 下篇预告

一、营销全链路流程图

用户下单

┌──────────────────────────────────────┐
│ 营销规则加载(解释器) │
│ "FULL_REDUCE(100,10) AND DISCOUNT(0.8)" │
└──────────────┬───────────────────────┘

┌──────────────────────────────────────┐
│ 优惠计算链(责任链) │
│ FullReduce → Discount → InstantReduce │
│ → Coupon → Points │
└──────────────┬───────────────────────┘

┌──────────────────────────────────────┐
│ 营销规则作用于商品(访问者) │
│ Goods / Order / Coupon 三元素 │
│ + FullReduceVisitor / DiscountVisitor │
└──────────────┬───────────────────────┘

┌──────────────────────────────────────┐
│ 优惠券模板(享元) │
│ 优惠券模板共享,减少内存 │
└──────────────┬───────────────────────┘

┌──────────────────────────────────────┐
│ 优惠策略(策略) │
│ 满减/折扣/立减/优惠券 多种算法 │
└──────────────┬───────────────────────┘

输出最终价格


二、5 大设计模式协作

2.1 模式一:责任链(优惠计算链)

/**
* ✅ 责任链:优惠链
*/

public interface DiscountHandler {
void apply(DiscountContext context, DiscountChain chain);
}

@Component
public class FullReduceHandler implements DiscountHandler {
@Override
public void apply(DiscountContext ctx, DiscountChain chain) {
if (ctx.getAmount().compareTo(new BigDecimal("100")) > 0) {
ctx.setAmount(ctx.getAmount().subtract(new BigDecimal("10")));
}
chain.next(ctx);
}
}

作用:优惠规则可动态组合。

2.2 模式二:访问者(多元素多规则)

/**
* ✅ 访问者:营销作用于多元素
*/

public interface MarketingElement {
void accept(MarketingVisitor visitor);
}

public interface MarketingVisitor {
void visit(Goods goods);
void visit(Order order);
void visit(Coupon coupon);
}

public class Goods implements MarketingElement {
@Override
public void accept(MarketingVisitor visitor) {
visitor.visit(this);
}
}

public class FullReduceVisitor implements MarketingVisitor {
@Override
public void visit(Goods goods) {
// 满减作用于商品
}
@Override
public void visit(Order order) {
// 满减作用于订单
}
}

作用:3 种元素 × 8 种规则 = 24 处逻辑,统一抽象。

2.3 模式三:解释器(业务规则动态化)

/**
* ✅ 解释器:自定义规则语言
*/

public interface RuleExpression {
BigDecimal interpret(Map<String, Object> context);
}

public class FullReduceExpression implements RuleExpression {
@Override
public BigDecimal interpret(Map<String, Object> context) {
// 满 100 减 10
}
}

/**
* ✅ 业务方配置规则字符串
* "FULL_REDUCE(100, 10) AND DISCOUNT(0.8)"
*/

public class RuleParser {
public static RuleExpression parse(String rule) {
// 解析 + 生成表达式
}
}

作用:业务方可视化配置规则。

2.4 模式四:享元(优惠券模板)

/**
* ✅ 享元:优惠券模板共享
*/

@Component
public class CouponTemplateFactory {
private final ConcurrentHashMap<String, CouponTemplate> templatePool
= new ConcurrentHashMap<>();

public CouponTemplate getTemplate(String code) {
return templatePool.computeIfAbsent(code, this::createTemplate);
}
}

作用:100 万张优惠券共享模板,从 10GB 降到 50MB。

2.5 模式五:策略(支付优惠)

/**
* ✅ 策略:支付优惠
*/

public interface DiscountStrategy {
BigDecimal apply(BigDecimal amount, User user);
}

@Component
public class NewUserDiscount implements DiscountStrategy {
@Override
public BigDecimal apply(BigDecimal amount, User user) {
if (user.isNew()) {
return amount.multiply(new BigDecimal("0.9"));
}
return amount;
}
}

@Component
public class VipDiscount implements DiscountStrategy {
@Override
public BigDecimal apply(BigDecimal amount, User user) {
if (user.isVip()) {
return amount.multiply(new BigDecimal("0.8"));
}
return amount;
}
}

作用:加新优惠策略只加 1 个类。


三、完整代码实战

3.1 营销服务(综合)

/**
* ✅ 营销服务:5 大模式协作
*/

@Service
public class MarketingService {

@Autowired
private List<DiscountHandler> handlers; // 责任链

@Autowired
private MarketingContext marketingContext; // 策略

@Autowired
private CouponTemplateFactory templateFactory; // 享元

/**
* ✅ 计算最终金额
*/

public BigDecimal calculate(Order order, List<String> rules) {
BigDecimal amount = order.getTotal();

// 1️⃣ 解释器:解析规则
RuleExpression expression = RuleParser.parseAnd(rules);
Map<String, Object> ctx = new HashMap<>();
ctx.put("amount", amount);
amount = expression.interpret(ctx);

// 2️⃣ 责任链:优惠叠加
DiscountContext dc = new DiscountContext();
dc.setAmount(amount);
dc.setOrder(order);
DiscountChain chain = new DiscountChain(handlers);
chain.process(dc);
amount = dc.getAmount();

// 3️⃣ 策略:用户优惠
amount = marketingContext.apply(amount, order.getUser());

// 4️⃣ 享元:优惠券模板
for (Coupon coupon : order.getCoupons()) {
CouponTemplate template = templateFactory.getTemplate(coupon.getCode());
amount = template.apply(amount);
}

return amount;
}
}

3.2 访问者:营销计算

/**
* ✅ 访问者:营销规则作用于多元素
*/

public class MarketingCalculator implements MarketingVisitor {

private BigDecimal totalDiscount = BigDecimal.ZERO;

@Override
public void visit(Goods goods) {
// 商品单独折扣
}

@Override
public void visit(Order order) {
// 订单整体折扣
}

@Override
public void visit(Coupon coupon) {
// 优惠券折扣
totalDiscount = totalDiscount.add(coupon.getAmount());
}
}

3.3 责任链:优惠叠加

/**
* ✅ 责任链:5 种优惠叠加
*/

public class DiscountChain {

private final List<DiscountHandler> handlers;
private int index = 0;

public void process(DiscountContext context) {
if (index < handlers.size()) {
DiscountHandler handler = handlers.get(index++);
handler.apply(context, this);
}
}
}


四、模式协作关系

营销全链路用了哪些模式?

├── 1. 责任链(DiscountChain)
│ └── 5 种优惠叠加

├── 2. 访问者(MarketingVisitor)
│ └── 3 种元素 × 8 种规则

├── 3. 解释器(RuleParser)
│ └── 业务方配置规则

├── 4. 享元(CouponTemplateFactory)
│ └── 优惠券模板共享

└── 5. 策略(DiscountStrategy)
└── 用户分层优惠

4.1 模式协作图

┌──────────────────────────────────────┐
│ 业务方配置规则(解释器) │
│ "FULL_REDUCE(100,10) AND …" │
└──────────────┬───────────────────────┘

┌──────────────────────────────────────┐
│ 解析规则(解释器) │
└──────────────┬───────────────────────┘

┌──────────────────────────────────────┐
│ 优惠叠加(责任链) │
│ FullReduce → Discount → … │
└──────────────┬───────────────────────┘

┌──────────────────────────────────────┐
│ 营销作用于多元素(访问者) │
│ Goods / Order / Coupon │
└──────────────┬───────────────────────┘

┌──────────────────────────────────────┐
│ 用户分层优惠(策略) │
│ NewUser / Vip / Normal │
└──────────────┬───────────────────────┘

┌──────────────────────────────────────┐
│ 优惠券模板(享元) │
│ 模板共享 + 用户实例 │
└──────────────────────────────────────┘


五、性能优化总结

5.1 内存优化

场景优化前优化后模式
商品标签 5GB 50MB 享元
优惠券模板 10GB 50MB 享元
字典数据 100MB 1MB 享元

5.2 CPU 优化

场景优化前优化后模式
优惠计算 O(N²) O(N) 责任链
多元素遍历 多次循环 一次遍历 访问者
规则解析 每次解析 编译缓存 解释器

5.3 可维护性

场景优化前优化后模式
加新优惠 改 8 处 加 1 个类 策略 + 责任链
改规则 改代码 改配置 解释器
加新元素 改 8 处 加 1 个元素 访问者

六、本篇小结 + 下篇预告

6.1 本篇小结

  • 营销全链路 = 5 大模式协作
  • 性能优化 + 可维护性双赢
  • 业务方可视化配置(解释器)
  • 6.2 实战心法

    • 责任链 + 解释器:规则动态化
    • 访问者 + 享元:性能与可维护
    • 策略 + 单例:分层用户优惠

    6.3 下篇预告

    第 50 篇【综合实战 – 下篇】:大白商城技术架构全链路设计模式应用

    下一篇我们看技术架构全链路——监控/配置/中间件/缓存/分布式,用到了另外 6 大模式:

  • 适配器 + 装饰器 + 外观 + 桥接 + 代理 + 中介者
  • Spring Cloud Alibaba 全家桶
  • 微服务架构
  • 并附完整的代码 + 流程图 + 模式协作图。


    觉得对您有帮助,麻烦点点关注啦,您的关注是我创作的最大动力~ 🎯

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 大白话说Java设计模式-49-综合实战中:营销全链路设计模式应用
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!