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 相关文章推荐
通过ODBC连接的SQL SERVER实例
Oct 09 PHP
NO3第三帝国留言簿制作过程
Oct 09 PHP
服务器端解压缩zip的脚本
Dec 22 PHP
菜鸟学PHP之Smarty入门
Jan 04 PHP
DedeCMS 核心类TypeLink.class.php摘要笔记
Apr 07 PHP
php ajax 静态分页过程形式
Sep 02 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
Jun 19 PHP
跟我学Laravel之请求与输入
Oct 15 PHP
PHP也能干大事之PHP中的编码解码详解
Apr 20 PHP
使用JavaScript创建新样式表和新样式规则
Jun 14 PHP
Zend Framework数据库操作方法实例总结
Dec 11 PHP
ThinkPHP框架表单验证操作方法
Jul 19 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实现快速排序法函数代码
2012/08/27 PHP
Laravel 5框架学习之向视图传送数据
2015/04/08 PHP
PHP验证码生成原理和实现
2016/01/24 PHP
window.location.hash 属性使用说明
2010/03/20 Javascript
JavaScript XML和string相互转化实现代码
2011/07/04 Javascript
jQuery+css实现图片滚动效果(附源码)
2013/03/18 Javascript
Javascript 命名空间模式
2013/11/01 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
JS根据生日算年龄的方法
2015/05/05 Javascript
seajs模块之间依赖的加载以及模块的执行
2016/10/21 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
整理关于Bootstrap表单的慕课笔记
2017/03/29 Javascript
node中使用es5/6以及支持性与性能对比
2017/08/11 Javascript
js时间戳与日期格式之间相互转换
2017/12/11 Javascript
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
2018/07/03 Javascript
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
2020/05/26 Javascript
Python3实现从指定路径查找文件的方法
2015/05/22 Python
python实现发送邮件功能
2017/07/22 Python
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
Django中使用Celery的教程详解
2018/08/24 Python
PyGame贪吃蛇的实现代码示例
2018/11/21 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
2019/08/06 Python
使用分层画布来优化HTML5渲染的教程
2015/05/08 HTML / CSS
找到不普通的东西:Bonanza
2016/10/20 全球购物
播音主持专业个人自我评价
2014/01/09 职场文书
应聘面试自我评价
2014/01/24 职场文书
要账委托书范本
2014/09/15 职场文书
群众路线领导干部个人对照检查材料(集锦)
2014/09/23 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers
Python中使用subprocess库创建附加进程
2021/05/11 Python
MySQL中in和exists区别详解
2021/06/03 MySQL
Python OpenCV实现传统图片格式与base64转换
2021/06/13 Python