应用场景

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

pay1.jpg

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

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

pay3.png

  1. // 示例代码,以 PHP 为例
  2. public function createOrder(OrderRequest $request): string
  3. {
  4. // region 处理订单信息
  5. // 业务代码
  6. // endregion
  7. // region 处理支付信息
  8. // 支付宝
  9. if ($request['pay_type'] == OrderModel::PayTypeAliPay) {
  10. // 业务逻辑
  11. }
  12. // 微信支付
  13. if ($request['pay_type'] == OrderModel::PayTypeWeChat) {
  14. // 业务逻辑
  15. }
  16. // 工商银行
  17. if ($request['pay_type'] == OrderModel::PayTypeICBC) {
  18. // 业务逻辑
  19. }
  20. // 招商银行
  21. if ($request['pay_type'] == OrderModel::PayTypeCMB) {
  22. // 业务逻辑
  23. }
  24. // endregion
  25. return "5606e700-11a6-4b60-97f0-5bbb7daf9d29";
  26. }

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

  1. createOrder 函数会越来越长
  2. 违反了设计模式的开闭原则

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

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

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

详情:https://mp.weixin.qq.com/s/RoleBS8a8LwOd7c5dWNmhg