优化业务代码 - 策略模式

文章目录:

  • 应用场景

  • Go 实现

  • PHP 实现

  • 小结

应用场景

一个常见的应用场景,就是在大家下单支付时会提示选择支付方式,然后系统会使用选择的支付方式进行结算。

f889a7c114b9f4b3455d322d5e95c470.png

大家都会写吧,给大家 5 min 代码怎么写?

“ 呵,你这不是看不起老夫吗?老夫拿起键盘,就是 if-else 梭哈,直接干!”

6d1231e1f74d666893d25030a0c97e16.png

// 示例代码,以 PHP 为例

public function createOrder(OrderRequest $request): string
{
    // region 处理订单信息
    // 业务代码
    // endregion

    // region 处理支付信息
    // 支付宝
    if ($request['pay_type'] == OrderModel::PayTypeAliPay) {
        // 业务逻辑 
    }

    // 微信支付
    if ($request['pay_type'] == OrderModel::PayTypeWeChat) {
        // 业务逻辑
    }

    // 工商银行
    if ($request['pay_type'] == OrderModel::PayTypeICBC) {
        // 业务逻辑
    }

    // 招商银行
    if ($request['pay_type'] == OrderModel::PayTypeCMB) {
        // 业务逻辑
    }
    // endregion

    return "5606e700-11a6-4b60-97f0-5bbb7daf9d29";
}

上面的这段代码,大家都会写,那么这么写,有什么问题?

  1. createOrder 函数会越来越长

  2. 违反了设计模式的开闭原则

怎么对上面的代码进行优化?

相信聪明的小伙伴已经知道要使用什么模式进行优化了,没错!就是 策略模式

下面一起来看一下,使用 GoPHP 语言,如何使用 策略模式 去改造它?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值