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 一个比较完善的简单文件上传
Mar 25 PHP
php _autoload自动加载类与机制分析
Feb 10 PHP
PHP fgetcsv 定义和用法(附windows与linux下兼容问题)
May 29 PHP
PHP多例模式介绍
Jun 24 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
Jul 18 PHP
yii2.0之GridView自定义按钮和链接用法
Dec 15 PHP
php返回字符串中所有单词的方法
Mar 09 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
Apr 21 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
Feb 28 PHP
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
Apr 26 PHP
PHP开发实现微信退款功能示例
Nov 25 PHP
thinkPHP框架实现的短信接口验证码功能示例
Jun 20 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用正则匹配form表单中所有元素的类型和属性值实例代码
2017/02/28 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
2019/02/25 PHP
用YUI做了个标签浏览效果
2007/02/20 Javascript
JavaScript 嵌套函数指向this对象错误的解决方法
2010/03/15 Javascript
Three.js源码阅读笔记(光照部分)
2012/12/27 Javascript
js获得鼠标的坐标值的方法
2013/03/13 Javascript
JavaScript数值数组排序示例分享
2014/05/27 Javascript
nodejs开发微博实例
2015/03/25 NodeJs
windows下安装nodejs及框架express
2015/08/07 NodeJs
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
web前端开发JQuery常用实例代码片段(50个)
2015/08/28 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
javascript实现获取图片大小及图片等比缩放的方法
2016/11/24 Javascript
JavaScript实现邮箱地址自动匹配功能代码
2016/11/28 Javascript
详解vue-cli之webpack3构建全面提速优化
2017/12/25 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
2018/08/30 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
vue使用swiper.js重叠轮播组建样式
2019/11/14 Javascript
详解ES6实现类的私有变量的几种写法
2021/02/10 Javascript
跟老齐学Python之大话题小函数(1)
2014/10/10 Python
在Docker上开始部署Python应用的教程
2015/04/17 Python
python设计模式大全
2016/06/27 Python
浅谈Python traceback的优雅处理
2018/08/31 Python
Python字符串处理的8招秘籍(小结)
2019/08/13 Python
Python调用graphviz绘制结构化图形网络示例
2019/11/22 Python
Vince官网:全球著名设计师品牌,休闲而优雅的服饰
2017/01/15 全球购物
赡养老人协议书
2014/04/21 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
我的中国心演讲稿
2014/09/04 职场文书
婚前协议书标准版
2014/10/19 职场文书
商务考察邀请函模板
2015/02/02 职场文书
2016新年年会主持词
2015/07/06 职场文书
青年文明号创建口号大全
2015/12/25 职场文书
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS