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 相关文章推荐
php中数据的批量导入(csv文件)
Oct 09 PHP
PHP输出控制功能在简繁体转换中的应用
Oct 09 PHP
用PHP读取RSS feed的代码
Aug 01 PHP
PHP 高级课程笔记 面向对象
Jun 21 PHP
php数组转换js数组操作及json_encode的用法详解
Oct 26 PHP
php实现简易聊天室应用代码
Sep 23 PHP
ThinkPHP中数据操作案例分析
Sep 27 PHP
PHP常用工具类大全附全部代码下载
Dec 07 PHP
Laravel使用支付宝进行支付的示例代码
Aug 16 PHP
php实现微信企业转账功能
Oct 02 PHP
Laravel使用原生sql语句并调用的方法
Oct 09 PHP
php判断IP地址是否在多个IP段内
Aug 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
php面向对象全攻略 (七) 继承性
2009/09/30 PHP
ThinkPHP标签制作教程
2014/07/10 PHP
超级强大的表单验证
2006/06/26 Javascript
根据邮箱的域名跳转到相应的登录页面的代码
2012/02/27 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
js中最容易被忽视的事件问题大总结
2016/05/15 Javascript
JS实现点击事件统计的简单实例
2016/07/10 Javascript
微信开发 消息推送实现代码
2016/10/21 Javascript
详解微信小程序 页面跳转 传递参数
2016/12/08 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
详解使用路由延迟加载 Angular 模块
2017/10/12 Javascript
JS继承与闭包及JS实现继承的三种方式
2017/10/15 Javascript
Three.js基础学习教程
2017/11/16 Javascript
webpack搭建vue 项目的步骤
2017/12/27 Javascript
node Buffer缓存区常见操作示例
2019/05/04 Javascript
微信小程序实现拍照画布指定区域生成图片
2019/07/18 Javascript
使用 Opentype.js 生成字体子集的实例代码详解
2020/05/25 Javascript
[04:50]DOTA2亚洲邀请赛小组赛第四日 TOP10精彩集锦
2015/02/02 DOTA
php使用递归与迭代实现快速排序示例
2014/01/23 Python
Python正则表达式匹配ip地址实例
2014/10/09 Python
Python入门篇之函数
2014/10/20 Python
python+ffmpeg视频并发直播压力测试
2018/03/06 Python
numpy中的ndarray方法和属性详解
2019/05/27 Python
python中的函数递归和迭代原理解析
2019/11/14 Python
使用Python获取当前工作目录和执行命令的位置
2020/03/09 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
python利用pytesseract 实现本地识别图片文字
2020/12/14 Python
玖熙女鞋美国官网:Nine West
2016/10/06 全球购物
Theo + George官方网站:都柏林时尚品牌
2019/04/08 全球购物
给老师的道歉信
2014/01/11 职场文书
幼儿园新学期寄语
2014/01/18 职场文书
阳光体育活动总结
2014/04/30 职场文书
社区助残日活动总结
2014/08/29 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
2015大学生入党个人自传
2015/06/26 职场文书
Python可视化神器pyecharts绘制水球图
2022/07/07 Python