文章目录:
应用场景
Go 实现
PHP 实现
小结
应用场景
一个常见的应用场景,就是在大家下单支付时会提示选择支付方式,然后系统会使用选择的支付方式进行结算。
大家都会写吧,给大家 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) {
// 业务逻辑
}
// endregion
return "5606e700-11a6-4b60-97f0-5bbb7daf9d29";
}
上面的这段代码,大家都会写,那么这么写,有什么问题?
createOrder 函数会越来越长
违反了设计模式的开闭原则
怎么对上面的代码进行优化?
相信聪明的小伙伴已经知道要使用什么模式进行优化了,没错!就是 策略模式。
下面一起来看一下,使用 Go
和 PHP
语言,如何使用 策略模式 去改造它?