策略模式:设计模式中的一种

策略模式:设计模式中的一种

到目前为止,我们已经介绍了本系列中的三种设计模式。我们定义了四类不同的设计模式。在本文中,我将解释策略设计模式,它属于行为设计模式。

你可能有一个问题:什么时候应该使用这种设计模式?我想说,当我们有多种方法(算法)来执行相同的操作,并且我们希望应用程序根据您拥有的参数选择特定的方法时。这种模式也称为策略模式。

本文的一个非常简单的示例是排序功能。例如,我们有多种对数组进行排序的算法,但是根据数组元素的数量,我们应该选择使用哪种算法来获得最佳性能。

此模式也称为策略模式。

问题

我将举一个集成了多个支付网关的电子商务网站的例子。尽管该网站有多个支付网关,但根据要求,它们不会全部显示在前端。相反,需要根据购物车金额即时选择适当的支付网关。

举个简单的例子,如果购物车价值低于 500 美元,则应使用 PayPal 标准处理付款,但如果金额为 500 美元或以上,则应使用存储的信用卡详细信息进行处理(假设详细信息已存储)。

如果没有实施正确的策略,我们的代码将如下所示:

首先,我们将提供通过 Paypal 支付和通过信用卡支付的主要类,这些类将在下面添加。

// Class to pay using Credit Card class payByCC { private $ccNum = ''; private $ccType = ''; private $cvvNum = ''; private $ccExpMonth = ''; private $ccExpYear = ''; public function pay($amount = 0) { echo "Paying ". $amount. " using Credit Card"; } } // Class to pay using PayPal class payByPayPal { private $payPalEmail = ''; public function pay($amount = 0) { echo "Paying ". $amount. " using PayPal"; } } // This code needs to be repeated every place where ever needed. $amount = 5000; if($amount >= 500) { $pay = new payByCC(); $pay->pay($amount); } else { $pay = new payByPayPal(); $pay->pay($amount); } 登录后复制