php策略模式简单示例分析【区别于工厂模式】


Posted in PHP onSeptember 25, 2019

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

策略模式和工厂模式很像。

工厂模式:着眼于得到对象,并操作对象。

策略模式:着重得到对象某方法的运行结果。

示例:

//实现一个简单的计算器
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
$obj = new Op('Sub');
echo $obj->get_result(6,5);//1
$obj = new Op('Multi');
echo $obj->get_result(6,2);//12
$obj = new Op('Div');
echo $obj->get_result(6,2);//3

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

PHP 相关文章推荐
第十二节--类的自动加载
Nov 16 PHP
利用php下载xls文件(自己动手写的)
Apr 18 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
Sep 10 PHP
PHP图像处理类库MagickWand用法实例分析
May 21 PHP
PHP中的Session对象如何使用
Sep 25 PHP
PHP中JSON的应用技巧
Oct 10 PHP
PHP常用的小程序代码段
Nov 14 PHP
thinkPHP实现的联动菜单功能详解
May 05 PHP
php微信开发之关注事件
Jun 14 PHP
PHP实现数组根据某个单元字段排序操作示例
Aug 01 PHP
php-7.3.6 编译安装过程
Feb 11 PHP
YII2框架中添加自定义模块的方法实例分析
Mar 18 PHP
PHP 观察者模式深入理解与应用分析
Sep 25 #PHP
php模式设计之观察者模式应用实例分析
Sep 25 #PHP
php创建类并调用的实例方法
Sep 25 #PHP
关于php开启错误提示的总结
Sep 24 #PHP
php集成开发环境详解
Sep 24 #PHP
php和nginx交互实例讲解
Sep 24 #PHP
php连接mysql数据库最简单的实现方法
Sep 24 #PHP
You might like
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
php实现每日签到功能
2018/11/29 PHP
JavaScript 参考教程
2006/12/29 Javascript
用jscript实现新建和保存一个word文档
2007/06/15 Javascript
JQuery获取文本框中字符长度的代码
2011/09/29 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
JavaScript中的pow()方法使用详解
2015/06/15 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
2017/11/20 Javascript
jQuery 实现倒计时天,时,分,秒功能
2018/07/31 jQuery
JS块级作用域和私有变量实例分析
2019/05/11 Javascript
vue.js的简单自动求和计算实例
2019/11/08 Javascript
vue setInterval 定时器失效的解决方式
2020/07/30 Javascript
[47:20]DAC2018 4.4 淘汰赛 Optic vs Mineski 第一场
2018/04/05 DOTA
python生成器的使用方法
2013/11/21 Python
讲解Python中的递归函数
2015/04/27 Python
Python版微信红包分配算法
2015/05/04 Python
详细讲解Python中的文件I/O操作
2015/05/24 Python
浅谈对yield的初步理解
2017/05/29 Python
Python2.7读取PDF文件的方法示例
2017/07/13 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
python使用socket 先读取长度,在读取报文内容示例
2019/09/26 Python
Python while循环使用else语句代码实例
2020/02/07 Python
Python Pivot table透视表使用方法解析
2020/09/11 Python
日本面向世界,国际级的免税在线购物商城:DOKODEMO
2017/02/01 全球购物
印尼旅游网站:via
2017/11/12 全球购物
荷兰皇家航空公司中国官网:KLM中国
2017/12/13 全球购物
丽笙酒店官方网站:Radisson Hotels
2019/05/07 全球购物
LORAC官网:美国彩妆品牌
2019/08/27 全球购物
人事专员的职责
2014/02/26 职场文书
应届大专生自荐书
2014/06/16 职场文书
高考作弊检讨书1500字
2015/02/16 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
Apache Calcite 实现方言转换的代码
2021/04/24 Servers