您现在的位置是:网站首页 > 心得笔记
常用设计模式之策略模式
简介本文将记录常用设计模式之策略模式
使用场景
系统需要支持不同的支付形式,现为每个支付网关实现具体的策略。每个策略将封装具体的支付处理逻辑。
1.定义策略接口
// app/Interfaces/IPaymentMethod.php namespace App\Interfaces; interface IPaymentMethod { public function pay(float $amount): string; }
2.实施具体策略
class PayPalStrategy implements IPaymentMethod { public function pay() { } }
3.创建上下文类
// app/Strategies/PaymentStrategy.php 命名空间 App\Strategies; 使用App\Interfaces\IPaymentMethod; 使用App\Services\Payment\PayPalStrategy; 使用App\Services\Payment\StripeStrategy; 使用App\Services\Payment\SquareStrategy; 使用Exception ; class PaymentStrategy { private IPaymentMethod $paymentMethod ; public function getPaymentMethod( string $gateway ): IPaymentMethod { switch ( $gateway ) { case 'paypal' : $this ->paymentMethod = App :: make ( PayPalStrategy :: class ); break ; case 'stripe' : $this ->paymentMethod = App :: make ( StripeStrategy :: class ); break ; case 'square' : $this ->paymentMethod = App :: make ( SquareStrategy :: class ); break ; 默认: 抛出 新的 \Exception(“不支持的支付网关 [ $gateway ]”); } 返回 $this ->paymentMethod; } }
上一篇:常用设计模式之观察者模式
下一篇:mysql的三范式