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 相关文章推荐
复杂检索数据并分页显示的处理方法
Oct 09 PHP
解决GD中文乱码问题
Feb 14 PHP
一个PHP的QRcode类与大家分享
Nov 13 PHP
php 判断数组是几维数组
Mar 20 PHP
基于php 随机数的深入理解
Jun 05 PHP
深入解析PHP内存管理之谁动了我的内存
Jun 20 PHP
php遍历目录输出目录及其下的所有文件示例
Jan 27 PHP
php实现斐波那契数列的简单写法
Jul 19 PHP
php使用str_replace实现输入框回车替换br的方法
Nov 24 PHP
php实现遍历目录并删除指定文件中指定内容
Jan 21 PHP
php判断linux下程序问题实例
Jul 09 PHP
laravel ORM 只开启created_at的几种方法总结
Jan 29 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
第九节 绑定 [9]
2006/10/09 PHP
第十三节 对象串行化 [13]
2006/10/09 PHP
PHP学习笔记 用户注册模块用户类以及验证码类
2011/09/20 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
2016/07/20 PHP
PHP基于回溯算法解决n皇后问题的方法示例
2017/11/07 PHP
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
JavaScript prototype属性深入介绍
2012/11/27 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
jquery实现网页查找功能示例分享
2014/02/12 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
2014/06/30 Javascript
详解JavaScript中shift()方法的使用
2015/06/09 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
网页瀑布流布局jQuery实现代码
2016/10/21 Javascript
jQuery 常见小例汇总
2016/12/14 Javascript
jQuery实现导航回弹效果
2017/02/27 Javascript
JS中cookie的使用及缺点讲解
2017/05/13 Javascript
jQuery复合事件结合toggle()方法的用法示例
2017/06/10 jQuery
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
解决vue+webpack打包路径的问题
2018/03/06 Javascript
解决element UI 自定义传参的问题
2018/08/22 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
使用Python脚本将绝对url替换为相对url的教程
2015/04/24 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
详解python使用Nginx和uWSGI来运行Python应用
2018/01/09 Python
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
解决Python设置函数调用超时,进程卡住的问题
2019/08/08 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
Python类的绑定方法和非绑定方法实例解析
2020/03/04 Python
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
类、抽象类、接口的差异
2016/06/13 面试题
食品安全责任书范本
2015/05/09 职场文书
2015年音乐教研组工作总结
2015/07/22 职场文书
2015年秋季灭鼠工作总结
2015/07/27 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers
一文搞懂Java中的注解和反射
2022/06/21 Java/Android