当前位置: 首页 > news >正文

1做网站营销型网站翻译

1做网站,营销型网站翻译,长沙网络推广哪家好,网站开发需要多少钱新闻本文翻译自Design Patterns: The Strategy Pattern 目前为止我们已经在这个系列中接触了三个设计模式。我们定义了4种类型的设计模式。在这篇文章中#xff0c;我将讲解 策略模式#xff0c;这是属于行为类别的设计模式的。 你可能会有一个疑问#xff1a;我们什么时候该使用… 本文翻译自Design Patterns: The Strategy Pattern 目前为止我们已经在这个系列中接触了三个设计模式。我们定义了4种类型的设计模式。在这篇文章中我将讲解 策略模式这是属于行为类别的设计模式的。 你可能会有一个疑问我们什么时候该使用这个模式呢当我们有不同的方式算法来执行同样的操作而我们希望应用可以根据传入的参数来选择合适的方式去执行。 一个非常简单的例子就是排序。例如我们有不同的算法来排序数组元素但是需要根据数组中元素的个数来选择性能最好的算法。 问题 我将拿一个电子商务网站来作为例子。这个网站有多种支付通道但是这些支付请求不会在前端显示出来而是会根据用户购物车里面的商品价值来选择合适的支付通道。 一个实际点的例子就是如果购物车里的商品价值少于$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); } 想象一下上面中最后的一段代码将会出现在程序的各个地方如果有一个新的逻辑需要添加或者需要改变旧的逻辑你需要在每个出现这段代码的地方修补这是很容易导致bug的。 解决方法 我们将使用策略模式实现同样的需求这会让我们的代码非常整洁易懂可扩展。 接口 首先我们定义一个接口让所有不同的支付类实现这个接口 interface payStrategy {public function pay($amount); }class payByCC implements payStrategy {private $ccNum ;private $ccType ;private $cvvNum ;private $ccExpMonth ;private $ccExpYear ;public function pay($amount 0) {echo Paying . $amount. using Credit Card;}}class payByPayPal implements payStrategy {private $payPalEmail ;public function pay($amount 0) {echo Paying . $amount. using PayPal;}} 接下来我们将创建主类可以使用我们已经创建的不同的策略。 class shoppingCart {public $amount 0;public function __construct($amount 0) {$this-amount $amount;}public function getAmount() {return $this-amount;}public function setAmount($amount 0) {$this-amount $amount;}public function payAmount() {if($this-amount 500) {$payment new payByCC();} else {$payment new payByPayPal();}$payment-pay($this-amount);} } 这里你可以看到我们的条件加载不同支付方法放在了payAmount 方法中。让我们把所有代码组合起来看看我们如何使用这个 interface payStrategy {public function pay($amount); }class payByCC implements payStrategy {private $ccNum ;private $ccType ;private $cvvNum ;private $ccExpMonth ;private $ccExpYear ;public function pay($amount 0) {echo Paying . $amount. using Credit Card;}}class payByPayPal implements payStrategy {private $payPalEmail ;public function pay($amount 0) {echo Paying . $amount. using PayPal;}}class shoppingCart {public $amount 0;public function __construct($amount 0) {$this-amount $amount;}public function getAmount() {return $this-amount;}public function setAmount($amount 0) {$this-amount $amount;}public function payAmount() {if($this-amount 500) {$payment new payByCC();} else {$payment new payByPayPal();}$payment-pay($this-amount);} }$cart new shoppingCart(499); $cart-payAmount();// Output Paying 499 using PayPal$cart new shoppingCart(501); $cart-payAmount();//Output Paying 501 using Credit Card 你可以看到支付通道的选择对于应用来说是不透明的。根据传入的参数它可以选择可用的合适的支付通道。 添加一个新的策略 如果过了不久用户需要添加一个新的策略新的支付通道用不同的逻辑这种情况将会非常简单。假如我们需要添加一个新的支付通道 moneybooker 当购物车商品价值多于$500小于$1000时使用这种通道。 我们只需要创建一个新的策略类实现我们定义的接口 class payByMB implements payStrategy {private $mbEmail ;public function pay($amount 0) {echo Paying . $amount. using Money Booker;}} 有了新的策略类后我们需要在主方法 payAmount 中进行相应的修改 public function payAmount() {if($this-amount 500 $this-amount 1000) {$payment new payByMB();} else if($this-amount 500) {$payment new payByCC();} else {$payment new payByPayPal();}$payment-pay($this-amount); } 这样就可以了只需要修改 payAmount 方法。 总结 当我们有不同的方式去执行同样的任务时在软件编程语言中就是有不同的算法去执行同样的操作我们就应该考虑使用策略模式。 转载于:https://www.cnblogs.com/YungMing/p/4380379.html
http://www.yutouwan.com/news/149678/

相关文章:

  • jpress和wordpress哪个好北京网站设计知名乐云seo
  • 网站开发如何支持ipv6电子商务网站建站
  • 制作个人网站怎么做江苏专业网站建设
  • 云主机 多个网站猪价大涨已成定局
  • 济南三合一网站建设物流服务与管理
  • 网站建设 发短信文案利用网站做蜘蛛池
  • 深圳手机端网站建设设计公司什么网络公司比较好
  • 海阳手机网站开发优品ppt模板免费下载
  • 好的网页网站设计给客户做网站建设方案
  • 三五互联做网站怎么样前端用什么框架做网站
  • 二级网站建设方案模板网站内的搜索是怎么做的
  • 包小盒设计网站官网上海软件有限公司
  • 做网站 视频加载太慢竞价排名软件
  • 优购物官方网站地址wordpress如何创建项目
  • 汕头网站制作怎么做邢台信息港房屋出租
  • 秦皇岛网站公司公司的网站费怎样做会计分录
  • 用html做网站的步骤做亚马逊一年赚了60万
  • 开发网站能赚多少钱门户网站开发项目
  • 创世网站建设公司建立一个网页需要多少钱
  • 网站开发一键上架淘宝网站服务器买了后怎么做的
  • 网站备案核图书网站建设方案
  • 网站快速刷排名工具如何在局域网上做网站
  • 成都网站建设商家wordpress编辑模板标题
  • 静态网站开发预期效果想学广告设计怎么入门
  • 网站建设无底薪提成潍坊专科院校
  • 个人网站命名免费的外网连接器
  • 手机建网站需要多少钱国家企业年报系统官网
  • 合肥建站公司排名前十名欧模网室内设计网官网
  • 网站域名出售网站建设如何控标
  • 建筑公司网站管理员招标网官网下载