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与XML的PDF文档生成技术
Oct 09 PHP
基于PHP遍历数组的方法汇总分析
Jun 08 PHP
PHP实现微信公众平台音乐点播
Mar 20 PHP
PHP类中的魔术方法(Magic Method)简明总结
Jul 08 PHP
PHP+Mysql树型结构(无限分类)数据库设计的2种方式实例
Jul 15 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
Jul 29 PHP
PHP中使用file_get_contents post数据代码例子
Feb 13 PHP
PHP自毁程序(慎用)
Jul 09 PHP
开启PHP Static 关键字之旅模式
Nov 13 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
Feb 26 PHP
php时间函数用法分析
May 28 PHP
PHP实现常用排序算法的方法
Feb 05 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
经典的PHPer为什么被认为是草根?
2007/04/02 PHP
yii2.0之GridView自定义按钮和链接用法
2014/12/15 PHP
php外部执行命令函数用法小结
2016/10/11 PHP
php一个文件搞定微信jssdk配置
2016/12/12 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
javascript 播放器 控制
2007/01/22 Javascript
JavaScript 加号(+)运算符号
2009/12/06 Javascript
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
2012/06/22 Javascript
js获取系统的根路径实现介绍
2013/09/08 Javascript
键盘KeyCode值列表汇总
2013/11/26 Javascript
javascript实现瀑布流自适应遇到的问题及解决方案
2015/01/28 Javascript
javascript实现带下拉子菜单的导航菜单效果
2015/05/14 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
jQuery EasyUI Panel面板组件使用详解
2017/02/28 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
2017/09/30 Javascript
vue 指定组件缓存实例详解
2018/04/01 Javascript
vue弹窗消息组件的使用方法
2020/09/24 Javascript
使用 vue-i18n 切换中英文效果
2018/05/23 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
Python 字典与字符串的互转实例
2017/01/13 Python
pygame游戏之旅 载入小车图片、更新窗口
2018/11/20 Python
python3实现斐波那契数列(4种方法)
2019/07/15 Python
如何安装2019Pycharm最新版本(详细教程)
2019/09/26 Python
PyCharm下载和安装详细步骤
2019/12/17 Python
OpenCV python sklearn随机超参数搜索的实现
2020/01/17 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
2020/02/06 Python
jupyternotebook 撤销删除的操作方式
2020/04/17 Python
python如何实现图片压缩
2020/09/11 Python
CSS3支持IE6, 7, and 8的边框border属性
2012/12/28 HTML / CSS
乌克兰品牌化妆品和香水在线商店:Bomond
2020/01/14 全球购物
求职简历的自我评价
2014/01/31 职场文书
说谎欺骗人检讨书300字
2014/11/18 职场文书
总经理2015中秋节致辞
2015/07/29 职场文书