• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    php 策略模式原理与应用深入理解

    本文实例讲述了php 策略模式原理与应用。分享给大家供大家参考,具体如下:

    策略模式 简单理解就是 有n个做法供你选择,根据你的需要选择某个策略得到结果

    就应用场景来说:

    例1:比如购买商品需要支付,你可以提供 微信支付、支付宝支付、支付通支付。。。。(不同的支付方式就是不同的策略)

    例2:购物车对产品的计价,如非vip 按原价计算 、vip按8折计算、有推广积分的可以用100积分抵20块。。。(不同的客户条件计价算法有所不同,只是这里的策略选择是根据登录顾客资料来变动的,当然也可以用观察者模式)

    例3:计算器,计算两个值得结果,你可以用加法、减法、乘法、除法。。。(不同的算法就是不同的策略)

    从应用我们就能进一步思考如何去用代码架构去实现这个过程!

    分析:

    1.首先策略模式肯定有很多种策略,而不同的策略都是一个拥有自己算法的对象,所以可以用一个接口或抽象类来框定 策略角色(虽然策略角色的共同点就都有一个算法)

    2.各种策略都定好了,需要有一个类来实现将你选择的策略拿过来使用,官方的说法就是环境角色,不去理解他字面的意思,简单认为就是 拿某一个策略来使用

    接下来看一个百度到的简单实例,抄用原因是简单易懂,能立即理解(网址:https://www.jb51.net/article/170770.htm)

    //实现一个简单的计算器 (策略接口类)
    interface MathOp{
      public function calculation($num1,$num2);
    }
    //加法 (策略一 策略具体实现,继承策略接口)
    class MathAdd implements MathOp{
      public function calculation($num1,$num2){
        return $num1 + $num2;
      }
    }
    //减法 (策略二 策略具体实现,继承策略接口)
    class MathSub implements MathOp{
      public function calculation($num1,$num2){
        return $num1 - $num2;
      }
    }
    //乘法 (策略三 策略具体实现,继承策略接口)
    class MathMulti implements MathOp{
      public function calculation($num1,$num2){
        return $num1 * $num2;
      }
    }
    //除法 (策略四 策略具体实现,继承策略接口)
    class MathDiv implements MathOp{
      public function calculation($num1,$num2){
        return $num1 / $num2;
      }
    }
    //环境角色  (调取某个策略就行计算,调用得看客户端按哪个键)
    class Op{
      protected $op_class = null;
      public function __construct($op_type){
        $this->op_class = 'Math' . $op_type;
      }
      public function get_result($num1,$num2){
        $cls = new $this->op_class;
        return $cls->calculation($num1,$num2);
      }
    }
    //具体应用过程
    $obj = new Op('Add');
    echo $obj->get_result(6,2);  //8
    echo "br/>";
    $obj = new Op('Sub');
    echo $obj->get_result(6,5);  //1
    echo "br/>";
    $obj = new Op('Multi');
    echo $obj->get_result(6,2);  //12
    echo "br/>";
    $obj = new Op('Div');
    echo $obj->get_result(6,2);  //3
    
    

    运行结果:

    8
    1
    12
    3

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • 详解SpringBoot结合策略模式实战套路
    • Java如何利用策略模式替代if/else语句
    • Java策略模式实现简单购物车功能
    • 详解Python设计模式之策略模式
    • JavaScript设计模式之策略模式实现原理详解
    • php策略模式简单示例分析【区别于工厂模式】
    • Java利用策略模式优化过多if else代码
    • Spring 环境下实现策略模式的示例
    上一篇:php策略模式简单示例分析【区别于工厂模式】
    下一篇:php判断目录存在的简单方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    php 策略模式原理与应用深入理解 php,策略,模式,原理,与,应用,