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

大家都会写吧,给大家 5 min 代码怎么写?
“ 呵,你这不是看不起老夫吗?老夫拿起键盘,就是 if-else 梭哈,直接干!”

// 示例代码,以 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) {// 业务逻辑}// endregionreturn "5606e700-11a6-4b60-97f0-5bbb7daf9d29";}
上面的这段代码,大家都会写,那么这么写,有什么问题?
- createOrder 函数会越来越长
- 违反了设计模式的开闭原则
怎么对上面的代码进行优化?
相信聪明的小伙伴已经知道要使用什么模式进行优化了,没错!就是 策略模式。
下面一起来看一下,使用 Go 和 PHP 语言,如何使用 策略模式 去改造它?
